Your disk is damaged. It will probably take DiskWarrior a long time to read it. Unfortunately, there's not much you can do about that. Disks with bad sectors take forever to read.
If you prefer, you can use the method I usually use instead:
1. See if you've got another hard drive around that's larger than the drive you're trying to recover. The drive needs to have at least as much free space as the entire size of the broken drive.
2. Connect both the broken drive and the larger drive to your Mac.
3. Open up Disk Utility, click on the broken drive, click "Get Info", and figure out what the disk identifier is (it'll be something of the form diskX, where X is some number).
4. If the broken disk is mounted, unmount it in Disk Utility.
5. Enter this command in the Terminal:
sudo dd if=/dev/rdiskX of="/Volumes/<name of the larger, properly working drive>/recovered.dmg" conv=sync,noerror
Replace rdiskX with whatever the disk identifier is, with an "r" in front. Replace the text inside <> brackets with the name of the larger drive you want to recover onto.
6. Wait a long time. Maybe hours, maybe a few days, depending on how broken the drive is.
7. At the end of this process, you should have a disk image file on the larger drive named "recovered.dmg" which should be the size of your broken disk.
8. Disconnect the broken disk.
9. Mount the disk image without mounting it, like so:
hdiutil attach -nomount "/Volumes/<disk name>/recovered.dmg"
10. At this point, you should be able to use DiskWarrior, Data Rescue, or whatever you like on the image to try to recover whatever files are on it, and it should go fairly quickly (relatively speaking, at least). Do be warned, though, that since you pulled these files from a disk with bad sectors on it, some files may be irreparably damaged or may have holes in them.
11. Once all the files you need to get back are recovered, throw away / recycle the broken drive. Don't try to use it again, because it's got hardware issues and you'll just have the same thing happen again later.