That's a good question and for those of us immersed in the detail of the subject, it's a good idea to stand back occasionally and think about such basic questions.
I think there are two answers. Firstly, XML offers a lot of functionality for a quite small cost. Secondly, it's popular because it's popular: once something acquires a certain critical mass, everyone uses it simply because there are benefits in doing things the same way as everyone else.
As far as overhead is concerned, remember that the biggest costs in any IT system are people costs. XML might cost you a bit more in processing power or in network bandwidth, but it succeeded where other more efficient approaches (such as ASN.1) failed because it's simpler and therefore cheaper to implement. Not just a bit cheaper, a lot cheaper: ASN.1 compilers were selling for six-figure sums, but XML parsers were free, because it was possible for amateurs to write XML parsers in a couple of weeks. Similarly, the fact that XML is human-readable and ASN.1 isn't makes a vast difference to the effort involved in debugging incorrect messages and getting to the point where applications interoperate successfully.
One of the odd things about computing is that the things that prove successful are very often things that don't seem to be technically optimal. But I think you'll usually find that they hit some kind of "sweet spot" in being there at the right time, at the right cost, being easy to understand and implement, and good enough to meet practical user needs.
Also remember that 90% or more of applications aren't performance critical. Simple technology designed for the 90% of applications with less demanding requirements tends to win in the market over complex technology designed for the top 10%.
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference