If you want a serial one I would suggest the InchWorm, mentioned in this forum - otherwise you're looking at JDM type programmers, but they have reliability issues.
And for just a bit more then the cost of an inchworm you can build the much faster USBed JuneBug.
Both the inchworm and the JuneBug need a programmed PIC. So unless you buy a kit you need to borrow or build a programmer to program the programmer. Both are very good.
I use a PICkit 2 USB with my iMac (using pk2cmd in a bash shell). I wired a little board that redirects the programming wires to the right places on the 16f628a. I compile with gpasm. It's fun to develop on the mac!