Информация из разряда "в общем и в целом". Да так, да правильно, но когда сталкиваешься с очередным "намертво зависло", то практического проку от всего перечисленного не очень. Было бы хорошо если бы существовал какой-нибудь инструмент, позволяющий отследить на чем Windows споткнулась именно в данный момент. Запускаешь утилиту для отслеживания событий, она собирает информацию о происходящем и пишет ее в журнал. После перезагрузки просматриваешь журнал и прикидываешь на чем могло споткнуться.