Если причина не в вирусе (например в троянец Rebooter могёт так пакостить) есть довольно таки геморойный способ поиска причины этой проблемы, а именно:
Когда Windows все-таки загрузится, отключить автоматическую перезагрузку при критических ошибках: Свойства системы - вкладка Дополнительно - Загрузка и восстановление - снять флажок "Выполнить автоматическую перезагрузку". После этого вместо перезагрузки система вылетит в "синий экран смерти" с кодом ошибки, который может помочь найти неисправность.