В крон запихать скрипт - раз в 1 мин запускается
В скрипте заводим 3 флага
Если юзер в системе флаг0=1
Если юзера нет в системе флаг0=0
Если флаг0=1 и флаг1>60, то перезапусить /etc/init.d/dm и поставить флаг1=0 флаг2=0
Если флаг0=1 и флаг1=0 и флаг2<30, то перезапусить /etc/init.d/dm и поставить флаг1=0 флаг2=0
Если флаг0=1, то флаг1 увеличивается на 1, а флаг2=0
Если флаг0=0, то флаг1=0, а флаг2 увеличивается на единицу.
Узнать кто в системе на иксах можно через
who | grep tty7 | grep username
Думаю как-то так Ж)