This sounds like the hard drive is on it's way out, but you can try this.
Start> Run> then type CMD
Then type fsutil dirty query G:
This queries the drive, and more than likely it will tell you that it is dirty.
Next type CHKNTFS /X G:
The X tells Windows to NOT check that particular drive (G) on the next reboot. At this time, manually reboot your computer, it should not do a Chkdsk and take you directly to Windows.
Once Windows has fully loaded, bring up another CMD prompt and type and now you want to do a Chkdsk manually by typing Chkdsk /f /r G:
This should take you through 5 stages of the scan and will unset that dirty bit.
Finally type fsutil dirty query G: and Windows should confirm that the dirty bit is not set on that drive.