to true amazing_andrew - ubcd has some amazing utilities when it comes to this stuff
grab a copy - www.ubcd4win.com - even if you dont use it to fix this specific problem, it is a must have to have laying around
apart from that, i would be running a chkdsk /r (backup your data first)
for physical damage: visit your HDDS manufacture website for their diagnostic tools (seatools for seagate, wd diag for western digital, sd diag for samsung drives)
i guess one of the ebst ways to test would be get a 2nd hdd and do a clean install on it, see how it runs.