1) попробовать отключить всю автозагрузку Пуск-Выполнить-msconfig (закладка Автозагрузка)
2) отключить заставку и включить отображение загружаемых драйверов, msconfig закладка BOOT.INI поставить галочку на параметр /BASEVIDEO и /SOS, таким образом при загрузке будет отображаться какие драйвера загружаются, если загрузка зависнет на загрузке драйверов будет видно на каком именно
3) включить логгирование загрузки, msconfig закладка BOOT.INI поставить галочку на /BOOTLOG, после загрузки в папке %systemroot%, обычно это папка WINDOWS на системном диске появится файлик ntbtlog.txt в нём будет лог загрузк винды, возможно там что то прояснится, но опять же если винда после этого не грузится и вы восстанавливаете её, возможно он затерётся, не знаю, но попробовать стоит
4)после восстановления винды попробовать выполнить проверку системных файлов Пуск-Выполнить-sfc /scannow
Если программа sfc находит, что защищенный файл был переопределен, подходящая версия файла восстанавливается из папки %системный_корневой_каталог%\system32\dllcache, а затем заменяет неправильный файл.
возможно программа запросит установочный диск, так же нужно учитывать что возможно какие то программы не будут работать после этой процедуры
5) как вариант я бы проверил поверхность винчестера (например программой mhdd), частенько сталкивался с такой проблемой при сбитых секторах
ну а дальше уже можно будет думать...