It really depends on how much money you want to spend.
Professional data recovery services can retrieve just about anything if your will to pay $$$$.
You could try spinrite from grc.com by steve gibson. His product has a large user base which people have reported it saving their data. I think its $69.99 or so.
If you have many bad sectors you will just have to be patient, as it will take a long time.