I use the ICD of pickit2/MPLAB and while it does work, there are lots of annoying quirks. It seems to get confused about breakpoints. I've had the PICkit2 go off into the weeks multiple times. Looking at the microchip forums, I'm not the only one. It seems to require a lot of fiddling to get it to work. Also, it works much better with the PIC18 series than PIC16 (more breakpoints, faster response).
On the MPLAB front: The C18 init stuff is pretty confusing to newbees though it's simple enough to just put a breakpoint on the code you are interested in and hit go. The way you look at variables is a bit confusing though once you figure it out it's pretty easy.
So, in short, I think it is a helluva deal but is just OK as a debugger.