If you happen to have a serial or parallel port on your computer, you can use PicPgm. It supports several really simple programmers, and can program nearly all Pics (up to PIC32). I built a TLVP (parallel port programmer using just a HC573) recently to program a '2550 - worked without problems.
The simples programmer I could find is the one from Lothar Stolz. I used it once to program a PIC16F876, but had no success with the '2550 mentioned above.
So these programmers can be build very cheap, but if you only have a USB port, you might want to go with the ebay one you found. It doesn't get any cheaper than that.