Normalmente, a primeira coisa a fazer é tentar um desligamento no modo de segurança e, se isso funcionar, use o MSConfig para desabilitar todos os serviços não essenciais e processos de inicialização e testar novamente. Se isso funcionar, você começa a ativá-los até que ele dê errado.
Um método muito simples, que às vezes ajuda, é abrir o gerenciador de tarefas e alternar para processos e deixar isso aberto enquanto você tenta desligar. Muitas vezes, o gerenciador de tarefas permanecerá aberto por tempo suficiente para você ver quais processos estão demorando muito para ser encerrados e identificar a falha. (Em alguns casos, o gerenciador de tarefas será encerrado mais cedo, mas você poderá reiniciá-lo novamente)
Outra alternativa é o Process Monitor da Sysinternals / Microsoft, que pode mostrar o que está acontecendo (por exemplo, arquivo / atividade de rede) quando você desligar.
No nível avançado, a Microsoft tem algumas ferramentas de desempenho projetadas para ajudar o OEM a rastrear e diagnosticar problemas de inicialização e desligamento. Eu nunca usei eles e dado o seu mercado-alvo, eles podem ser complicados de usar, mas se você estiver interessado procure por Xbootmgr.exe