I use Adium for light chatting if I just want to sign in, send a few messages, and sign out (very fast at loading and logging in). Has a beautiful interface, very responsive, incredibly customizable, supports 13 different IM networks.

For heavy, feature-filled chatting (ie, if I want to send custom emoticons, view webcam, see session messages, find out info about their clients, save their DPs, etc), I use Mercury Messenger. It's Java, so it works on all OSes, but it's takes up a bit of CPU and RAM as a result. Pretty slow on my computer, but it can do everything, and you can customize every single inch of your experience with it.

(in case anyone's interested in Mercury, latest Mac version can be downloaded here, and latest Windows version can be downloaded here).

Also got Windows Live Messenger on my phone, but there's some ambiguity as to whether or not it's costing me money to use, so I try to avoid staying on it too long.

What messenger(s) do you use, and why?