There is only one desktop technology that is truly cross paltform: html. And with jquery/ajax/html5 you'd be surprised how application-like you can make it look and feel.
For build once - run everywhere, there are only two serious options: Mono or Java. Build once - run everywhere has the downside of having to deploy the runtime for the operating system. Plus it seems to be hard to get a decent and solid UI that feels good on all operating systems. Chances are, that you will also have to put some extra effort into getting good performance and startup times.
There is also Adobe Air, which might be a good option too.
Cross platform development these days is most often done using c++ and QT.
You also should get yourself a decent jabber/XMPP library.