No one here has mentioned XML-s main advantage: validation rules (DTD, XSD). My conclusions, having used both:
- JSON is perfect for ajax, especially if you develop both server and client side yourself. You basically create js objects right in your server script!
- XML shines in corporate environments, when you have to set data exchange standards between big bureaucratic organizations. Often, one party develops its part months before another, so it really benefits from validating its requests against agreed XSD. Also, in big corporations, data transfer is often translated between different systems. This is also XML's strength, think XSLT. Example: code-free conversion into JSON :p
Of course, there's json-schema being developed but you won't find built-in support for it anywhere.
I'm a fanboy of both, they have just different strengths.