Sadly, normal free Jabber/XMPP does not seem to be a viable alternative. On Android, sure (though the clients are not too great at reconnecting/noticing-connection-loss/reporting-message-reception) but on iOS apparently you cannot run such things in the background. At least the situation was dire when I tried to convince some iOS friends to use XMPP instead of SMS last winter. http://monal.im/ looked most promising but turned out to crash or only work when active, I don't fully remember. Maybe it got better.
You could run the real XMPP client on a server and use the native push messaging system to wake up the mobile client. This would also enable receiving "offline" messages while the mobile device is not on a network or turned off.
Of course, this would let the person operating the "real" XMPP client read your messages; but the person operating the XMPP server can do that already, so there isn't any real change -- either way you should be using OTR messaging at all times.
In the peer to peer spirit of XMPP, such a project should make it really easy to run this virtual client yourself locally or on a cheap cloud server. Maybe something like that exists already? Anybody wanna build it?
Hi, I am the developer of monal. It is a real, direct xmpp client and remains open in the background as long as you have an internet connection. It even has preliminary support for Jingle voip.
While this is true, using imo.im is probably significantly easier than setting up your own XMPP client on your own box that will send push notifications to your phone and achieves the same thing.