I hear good things about SpinRite. I would only use to extend the amount of time I have to complete a recovery. I don't like the idea of "refreshing" bad sectors.

I like to try file-based rescue systems before the sector-based. Sector takes a long time, but if the data is absolutely necessary and there are no backups. Might as well.