El dispositivo Pickit2 es un programador  USB de microcontroladores y memorias de microchip de libre distribucion (el codigo y esquemas estan en la web oficial: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805 ) que usa el puerto ICSP de los microcontroladores, lo cual es una gran ventaja pudiendo reprogramar en caliente o incluso depurar el programa en su ubicacion final (cuidado con mezclar los 5V de el puerto ICSP por parte del programador con los 5V del dispositivo final. 
Si ambos dispositivos tienen un rail de alimentacion estable no hay problemas, pero esa situacion ideal no siempre se cumple, por tanto hay que evitar juntar la alimentación (los 5v), las masas tienen que estar unidas).  

Pese a poder fabricarlo, dada la integración de un producto comercial y que la diferencia entre comprarlo y fabricarlo no es tanta, sobre todo comparando con la version que incluye un zocalo ZIF, http://www.piccircuit.com/shop/pic-programmer/26-ica01-usb-pic-programmer-set.html , compre el mio en esta pagina, que descubri por ebay (tienen tienda ahi tambien) aunque es mejor comprar por su web que tienen mas stock.
Conectando y desconectando el programador (el conector ICSP con el dispositivo) repetidamente puede ocurrir que el PIC que integra el programador se estropee. Desconozco el motivo exacto (seguramente cortocircuito de los pines de datos del conector ICSP provoquen alguna interferencia en en pin de programacion del PIC... no es usual en otros proyectos que pase eso...), pero la ROM se borra.
El síntoma es que windows no detecta nada al conectar el programador.

 

Reprogramando el pic18f2550: Pickit2

En esta imagen muestro el programador, tras retirar el plastico termoretractil.

Para reprogramarlo es necesario un programador alternativo (en este caso el programador JDM), el archivo hex con el codigo del pickit2, que luego se puede actualizar desde la aplicacion de pickit si es necesario, y el diagrama de conexionado de el programador con el pickit2 (PIC18f2550).

A continuacion se muestra el esquema del programador JDM, que tambien sirve para nuestro pic 18f2550:



IC2 es nuestro PIC18f2550, y los pines que salen los tendremos que conectar a los pines correspondientes del puerto serie RS232.
Pinout RS232:



A la hora de soldar el conjunto,hay que tener en cuenta la orientación del conector serie (la numeración es una buena referencia) y cortar las pistas que salen de los pines del microcontrolador que vamos a usar.
Las pistas de los pines a cortar son Vss, MCLR,  RB7 y RB6 (Vdd=GND no es necesario).
Separados ya los pines que utilizaremos del resto del circuito del pickit2 soldademos un hilo de el pin necesario a nuestro circuito. No tengo fotos de el programador (si encuentro subo, pero no creo), ademas lo hice "aereo" xd y parecía una pelota, con diodos cruzando de un lado a otro...

Estando todo preparado: programador conectado por puerto serie al ordenador y con los hilos soldado a nuestro pickit, abriremos el programador winpic, http://www.winpic800.com/ , cargamos el hex que nos proporciona microchip (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
Al final de la pagina hay varios links, el que pone "PICkit 2 Firmware V2.32" es el hex), nos fijamos en que el el microcontrolador seleccionado sea el nuestro (PIC18F2550) y que el puerto sea el de nuestro puerto serie (mirando en el administrador de dispositivos de windows se pueden ver que puertos están siendo usados) y programamos el microcontrolador (pulsando al icono de un chip con una flecha verde).

Si todo ha salido satisfactoriamente, retiramos un poco de barniz de la pista al rededor del corte (rascando con una cuchilla por ejemplo) para poder soltar en ella y usamos trozos de hilo o similar para juntar los extremos de la pista anteriormente cortada.

Ahora insertamos el conector USB y abrimos el programa del pickit y tendria que reconocer el programador.