А если это реализовать только для трех протоколов (icq, jabber, skype)? Другие, в принципе, не так популярны.. каждому протоколу выделить лимит памяти на сохранение истории (напр по 1мб), все остальное, вышедшее за рамки лимита, грохать или закидывать в архив (если это возможно, подключаемый...