The level of security and anonymity an instant messaging platform provides should be the ultimate criteria for deciding which one to use. Practically speaking, not all of your counterparties will have the necessary motivation or technical skills to implement the various options and you may have limited leverage in convincing them to switch platforms.
While mobile encrypted chat platforms are increasing in popularity, and while they may offer secure transmission of content; it is difficult to be confident that your anonymity is protected given the numerous fingerprinting and tracking methods used by iOS and Android. Additionally, many of these platforms are closed-ecosystem if not closed-source.
If you require a widely-adopted, reasonably anonymous solution, then your only option is to use a platform based on OTR. You must understand that OTR is a server-based protocol and as such, exposes significant metadata to the server. [It is possible to run your own XMPP server - even better if itās hosted on your own hidden service and better still if all of your contacts register on it - but this is not trivial to set up securely and anonymously.]
Youāll need to choose an IM client that supports OTR. In parentheses is the name of the XMPP/OTR implementation followed by the language that itās written in. Youāll notice a pattern with some popular clients listed first:
Pidgin (libpurple, C): One of the most popular cross-platform desktop IM clients. It is unsafe given its track record: https://pidgin.im/news/security/
Adium (libpurple, C): As noted by @HulaHoop, Adium has also had a buggy past, for largely the same reasons as Pidgin. The developers have also been negligent when it comes to privacy issues.
Empathy (libpurple, C)
InstantBird (libpurple, C)
libpurple has roots going back to 1998 and AOL Instant Messenger. It is huge because it supports 14! messaging protocols out-of-the-box. Coupled with the fact that it is written in C/C++, which is relatively less safe than higher level languages, one would expect a fair number of memory-corruption bugs - and history has not disappointed.
The next generation of IM clients tend to use memory-safe languages and modular protocols.
CoyIM (xmpp/otr only, Go): Client-Server Instant Messengers (IM) - #11 by entr0py
Gajim (xmpp/pure-python-otr, Python): Client-Server Instant Messengers (IM) - #9 by entr0py
Tor Messenger (xmpp/libotr only, JavaScript): Client-Server Instant Messengers (IM) - #10 by entr0py. Stable release 6 months behind schedule and many important issues are still unresolved.
Kopete (modular, C++) / Telepathy: heavy KDE dependencies
Jitsi (multi-protocol, Java)
OTRās shortcomings include lack of group chat functionality, no asynchronous communication, and prior to V3, lack of encrypted file transfers. The Signal Protocol was developed to address these issues and is gaining acceptance on mobile platforms via closed (non-federated) ecosystems such as Signal, Whatsapp, and Facebook Messenger. [Of course, maintaining anonymity while using a mobile platform is a challenge of a different magnitude, if possible at all.]
OMEMO is the Signal Protocol adapted for XMPP. (audited). It is currently implemented in Android via Conversations and ChatSecure, and on the desktop via Gajim. Support on other clients, like Jitsi, is forthcoming. (Itās also on Tor Messengerās to-do list.)
Like OTR, OMEMO suffers from metadata exposure. However, with the possibility of asynchronous communication, itās no longer necessary to remain logged on at all times nor is it required to schedule chats using an out-of-band channel. Since neither protocol supports the āinvisibleā status, itās advisable to strengthen your own anonymity by using a separate XMPP account per contact and also by using Whonixās stream isolation feature to ensure that each contact receives a new Tor circuit. OMEMO is not backward compatible with OTR so your contacts will need an OMEMO-supported client.
On the other hand, if all parties are willing to make the required effort, more privacy can be achieved by using a decentralized platform, such as I2P-Messenger, Ricochet IM, or Tox. See the wiki for more information: Instant Messenger Chat
EDIT: Updated client list.
EDIT: Added note about mobile chat.