Clone your drive sector-by-sector using a tool (eg ddrescue) that knows how to work around bad sectors, and then use data recovery software on the clone. http://www.gnu.org/software/ddrescue/ddrescue.html
Ubuntu Rescue Remix:http://ubuntu-rescue-remix.org/
Ddrescue can perform multipass cloning. It clones the easy sectors on the first pass, and attempts the more difficult ones on subsequent passes. It can also clone your drive in reverse, thereby disabling lookahead caching. It keeps a log, allowing it to resume after an interruption.