Interesting question. To my eyes, you've identified the main distinction when you say about XSLT that "this is the most language neutral solution". If there's a likelihood that you're going to need to move onto another platform (Java / PHP / Python / Ruby / ... whatever), and the idea of porting either TT2 functionality or TT2 templates to language x doesn't really thrill you, then it would seem that XSLT would be a good choice. You'd be able to move between platforms and languages pretty easily, without having to rewrite much of the presentation layer.
However, having used TT2 a fair bit, and fooled around with XSLT, it did feel like XSLT was making me work pretty hard for the end result. Of course, a very large part of that is going to be due to my lack of experience with XSLT, but maybe that's not the whole reason; it seemed slightly verbose, and quite hard to debug. I'd be interested to see other monks' suggestions for some good books on this.
If you're not likely to move platform, and the changes that are likely to happen to the site are at the level of the data you're presenting and the way it's presented, then maybe TT2 is the way to go. It does make a (fairly) clean separation of presentation, content and logic, it's quite 'Perl-ish', and I have a hunch that for a lot of tasks it's a bit easier to work with. And, as you say, you can generate strict XHTML just as easily, so long as the templates are written carefully.
Are you posting in the right place? Check out Where do I post X? to know for sure.
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
Want more info? How to link or
or How to display code and escape characters
are good places to start.