Sean McGrath's article 'Behind the firewall, nobody can hear you scream.' provides a great summary of some of the issues with SOAP
Personally, my main griped with SOAP (and with XML-RPC but to a much lesser extent), is that it's simply massively over-engineered for most purposes.
99% of the time, if I need to connect two systems of a network, and particularly over the internet, the amount of data is either very small, and it's more flexible to handle it "manually" so you don't depend on clients that you often don't control to be able to talk SOAP properly, or the amount of data is very large, and wrapping it in SOAP makes it prohibitively much larger.
Why is it that if you put a bunch of engineers in a room together and tell them to write a spec, almost inevitably we seem to come up with stuff that they'd probably preferred not to have to use if someone else had presented them with an implementation?