It's not pretty, but it'll work as a last resort:
Install "photorec" which may be included in the "testdisk" package on your distribution (both can be found here).
"photorec <foo.tar>" and follow the prompts (choose "None -- non partitioned media" and "other" for the filesytem option). It should be able to recover many of the files, though you'll have to identify and rename them all by hand. At least it beats losing everything. (For reference, I tar'ed up my /etc dir and tried this. Even on an un-damaged tar file, it only got 225 of 337 files, and even some of those were pretty munged up.)
An even more brute force approach would be to run
"strings foo.tar > out.txt" to recover text data from the file, which would then need to be sorted through and put back into separate files by hand.
BTW... a google on "recover corrupt tar file" yielded several tools specific to your problem.