What kind of errors did chkdsk find? Did you use the /r flag? What did SFC say?
I would run a prog that will report the HDD's SMART attributes (defraggler is one). Then boot to a Seatools for DOS disk and run the long test. Back up any important data first.
You could try to disconnect all unnecessary hardware. Run Ghostbuster to see if there are any unnecessary drivers causing conflict. It could be a hardware problem is hanging Windows.