I was given a 4GB SDHC card by a friend, frantic that all her photos had disappeared. She did not do anything do physically damage the card, it was sitting in her camera and just suddenly started showing 0 photos one day when she turned it on.
I popped it into my linux machine and started to dd all the data I could get off of it. The first 512MB were fine. The next 512MB were completely unreadable. The last 3GB were fine.
Not sure exactly what could cause this type of partial failure, but it certainly seems like SHDC cards are actually multiple devices internally connected together, and it's possible to have just one fail at a time. Alternate explanations are welcome.
(VirtualBox + XP + Kernel FAT NTFS did the trick by the way, was able to save 80% of the photos).