I think it's your dirty bit!!!! (honestly that's what it's called)
Every time Windows XP starts, autochk.exe is called by the kernel to scan all volumes to check if the volume dirty bit is set
(If the dirty bit is set, autochk performs an immediate chkdsk /f on that volume. Chkdsk /f verifies file system integrity and attempts to fix any problems with the volume. It is usually caused by a hard shut down or a power loss during a read-right operation on that particular drive)
..... sometimes it sticks - so what you have to do is manually unset it....
It's easy enough - start the machine ... you'll just have to bite the bullet and wait
first you need a command prompt (the black screen)
click Start | Run - in the box type "CMD" and then enter .....
(leave out all the "s and press enter after each command)
now type " fsutil dirty query c:"
(if you have more than one disk go throught each of the letters - c:. d: etc)
This queries the drive, and if it's dirty it will tell you if not you'll get the message Volume - c: is NOT Dirty
Assuming that this turns out to be the problem
type "chkntfs /x c:"
(The X tells Windows to NOT check that particular drive on the next reboot)
then reboot your computer (power it down fully - then start it up)
it should not do a Chkdsk and take you directly to Windows.
Once Windows has loaded, bring up another CMD prompt
(now you want to do a Chkdsk manually) so
type "chkdsk /f /r c:"
This should take you through 5 stages of the scan and will
unset that dirty bit.
Finally, type "fsutil dirty query c:" and Windows will confirm that the dirty bit is not set on that drive.
Good luck!