I've just had to recover some data for a friend off his hard disk that became badly corrupted(lost its partition table). I found teh following bit of software which whilst slightly limited in its demo mode did the job extraordinarily well. (limitation is only one folder at a time, needing to scan disk each time at ~30 mins each time)
iRecover from
www.diydatarecovery.nl
Click the union flag at teh bottom for english version of the site.
Well recommended!