I've used the PICStart Plus quite a bit - it's $200 from digikey, but it's been out long enough that you might be able to find one on ebay. Lately I've used the PIC-ICD quite a bit - you can get it for $100, but it's more complicated to use, and it only works with the 16F87x chips. But it lets you pause and debug programs on the chip in the circuit, which is a really neat feature.
If you can afford it, the PICStart Plus is probably the way to go. It's well integrated with the MPLab software and it's really easy to use.
If not, I've also used the EPIC programmer here:
http://www.melabs.com/products/epic.htm
It uses the parallel port, isn't integrated with MPLAB, and for some reason, I was unable to run it under Windows NT, but once I got it working, it was very solid, and it let me do in-circuit serial programming, and it's only $60.
There are also plans all over the web for different kinds of programmers, just ask
the goog