If you have tried those three, you have tryed some of the best out there.
I would base my decision on the needs i have, for example:
Gaim is quite ugly, but works just fine for messaging, has tabbed windows, roster support, transports support, multiprotocol, group chat… and a couple other features. No jingle yet, though.
Gajim looks nicer, its jabber protocol only, and as such has a bit more functions and works better with it. (also tabbed, file transfer, utf, group chat, SSL/TLS etc…)
MirandaIM is not very nice, its multiprotocol, windows specific and doesnt support tabbed chats natively.
Spark is java based (multiplataform), jabber only, excelent wildfire integration, tabbed chats, file transfers, and a couple of other niceties (asterisk plugin and a nice pro-free-software company behind it).
Psi nice, quick, light, jabber only, multiplataform, transports support, tabbed windows, encrypted chats, file transfer… etc.
Those would be my top 5, and would base my election on their features and needs.
Right now, for ex. im deciding between Psi and Spark, Psi is lighter, and featurefull, but its a bit uglier, also its not as integrated to wildfire as Spark. I have been thinking about using both, just to see how it goes…
ps.
Here you have a list of jabber clients:
http://www.jabber.org/software/clients.shtml
And here a comparison, showing the different features:
Message was edited by: sud_crow