O mais provável é que algum processo esteja respondendo mal ao processo de desligamento (cancelando o desligamento quando notificado sobre isso).
O melhor que você pode fazer é matar o processo manualmente a partir do Process Explorer, um por um, e tentar logoff após cada kill. Uma vez que o logoff tenha sucesso, você sabe que o último processo que você matou foi o que causou o problema.