The absolute gold standard program out there for this sort of thing is SpinRite. (
www.grc.com)
At $90 it's certainly not free, but I don't think there's anything else that does the low-level sector by sector repairing that this tool does. Basically, as long as the drive isn't physically damaged, there's a very good chance SpinRite can completely fix it. I know people have used it on iPod's too and it fixes them as well. (it's not just for data recovery, it actually repairs bad sectors)