Well… what would be really cool is a button you push and then it pops up a small “magic contact selector” which slowly scrolls down and shows your most chatted with contacts, and if you hit space, it would open a chat with that contact
The graphical interface should be as simple as possible but still be modern in look, feel and functionality. Filling up the interface with too many controls is also not advisable. The perfect contact list in my opinion and any interface as a matter of fact, should have a smooth feeling to it (smooth scroll, etc).
With the general idea of modernity and keeping it small and uncluttered, I think it's better to not show the contact avatars on the roster all the time, like most clients do. But what about the times you want to see them? The solution I find is this: when positioning your mouse pointer on the contact name, it would smoothly expand in height showing full description (avatar, status and any other extended information added by plugins).
Smooth effects and animations are good because it's easy on the eyes!
Lots of keyboard shortcuts :)
A non-intrusive message notification system. E.g.: Instead of popping out a box on the screen (like libosd does) when a user is chatting with someone and receives a new message from someone else, it seems smarter to for the notification to show in the chat window, where the user has his eyes focused and should not be distracted. It could replace the chat window's header (where the avatar and contact name are shown) for a short time saying “John wants to talk to you. Click the header to open a TAB.”.
A special effect that runs only on application initialization: the rooster contacts could be filled in with a fade-in effect, top to bottom, or anything else, the point being of making an attractive contact list and a adding a modern feel to it.