Как программе удалить саму себя?
Для распространения своей утилиты под различными операционными системами вы можете воспользоваться кросс-платформенным установщиком Qt Installer Framework 1.5.0. Если мне не изменяет память - возможность удаления программы там присутствует. А вообще лучше всего сделать так:
Для Windows - установщик, который создает в меню "Пуск" ярлык на "unist.exe", удаляющий программу.
Для Linux - deb-пакет/tar.gz-пакет. Функция удаления линуксоидам не нужна, эту задачу решит пакетный менеджер, против которого ставить софт не рекомендуется. 
Насчет Mac OS/OS X не знаю, но думаю там есть возможность удаления установленного приложения из каталога установленных программ.
Делать внутри программы функцию удаления этой программы - весьма плохой тон.
для OS X не нужно, т.к. программа туда просто копируется и удаляется простым удалением файлов.
для линухи тоже самое или пакетный менеджер все сделает, для винды, как вам уже говорили, пишется деинсталлер, который убирает из реестра ключи вашей проги + удаляет ярлыки и файлы программы - ничего сложного.