Cara tu vai precisar de um servidor e um cliente.
para o servidor usa um que tenha o protocolo chamado JABBER(XMPP), ele é um protocolo bastante usado, o google utiliza ele no GTalk. Sobre o servidor ainda, tem um de licença GNU chamada “Openfire”. eu estou utilizando ele em um projeto que participo no CIN-UFPE.
Ah, um detalhe, este servidor tem suporte a diversos “Gateways” que com eles vc pode incorporar diversos clientes tipo: MSN, ICQ, IRQ, AOL e Gtalk(beta) e outros que nao me vem a cabeça agora.
Sobre os clientes, a propria empresa que fabrica o Openfire, tem um cliente chamado “Spark”, ele é feito em java awt, swing.
Tem um semi-projeto dele feito para WEB utilizando a tecnologia RIA chamada Flex, mas acho q ainda nao está muito bom.
Sobre clientes nao-nativos da empresa que o servidor Openfire suporta tem uma listinha que descrevi acima.
-Pdgin
-Gaim
-Spark
Ah, nesta empresa exite uma API chamada Smack que vc pode fazer um cliente messenger personalisado para poder usar com o Openfire (Eu mesmo fiz um do zero com esta API) existe Docs ensinando como conectar, fazer conferencias e etc. muito bom mesmo.
Abaixo segue o site da empresa que fabrica o Spark e o Openfire e sobre o protocolo JABBER(XMPP):
http://www.igniterealtime.org/
http://xmpp.org/software/clients.shtml
É isso, procura que tu acha mais sobre messengers e derivados, tem bastante fórum sobre o Jabber e outros protocolos para envio de mensagem instantânea. Boa sorte.