If you can connect that hard drive internally (take it out of it's case and connect to a SATA/PATA header) it might be able to detect errors and correct them. It will certainly do it faster than any USB connection might allow.
And assuming there's no virus, what it sounds like is that his system or even yours may be trying to defrag that hard drive whenever it's plugged in. So when you suddenly disconnect a hard drive while data is trying to be written (or moved) you wind up causing all kinds of problems - just like that. This is why it's so important to use the disconnect and eject media options in the systray.
So right now, you're best option might be to try and copy everything you can over to a safe or alternate location. Do it now while you still can. This will obviously take some time to do too. That's just advice in case the stuff on it is stuff you care about. You may even want to try this from a different computer too. Then again, perhaps booting a live Linux system or something like your HDD's manufacturer recovery disk might be something to consider for this data recovery process - just not Windows.
Then, as I said, you may want to consider connecting that drive internally and scanning it for problems. Again, this may take some time depending on the damage that was done. It may also come to light that your external HDD has tripped it's SMART flag too which is all the more reason to get your data off of it - or at least copied.
That's what I would do. First limit the damage by getting whatever data I can still get. Then and only then would I try to fix the problem. Good luck.
Chkdsk? Spitrite? What have you tried? – Ƭᴇcʜιᴇ007 – 2012-08-19T18:56:25.237
I tried trying to fix the sector errors as right_click->properties->tools->error-checking but then the process never starts. It is unable to check for errors – Fasih Khatib – 2012-08-19T18:57:59.603