Lo más probable es que no estés grabando, ni borrando, ni nada de nada. Ten en cuenta una cosa, IC-Prog no verifica que ha borrado el PIC. Lo único que verifica es que el PIC esté borrado, comprobando que toda su memoria esté borrada (todos los bits igual a 1). Es decir, que si el PIC ya estaba borrado antes de darle a "borrar todo", te va a dar la verificación correcta, aunque no haya hecho nada.
Incluso puede ser que el programador no esté leyendo tampoco. Sólo con que el fallo que tenga el programador (que lo tendrá, seguro) esté provocando que en la entrada de datos lea siempre unos, IC-Prog puede interpretar que está leyendo un PIC borrado.
Desde luego, no tienes ningún dato para pensar que el problema sea que el PIC esté protegido contra lectura o escritura, ya que en ese caso, no aparecería como borrado (en un PIC protegido, una parte de la memoria aparece como si estuviera llena de ceros, en vez de unos), y en cualquier caso, después de un borrado, las protecciones contra lectrura y escritura quedan deshabilitadas.
Asegúrate de que tu programador conecta entre sí las patillas PGM y VSS del PIC. Y no olvides que en los programadores tipo JDM la masa del puerto serie (patilla 5) no coincide con los 0V del programador y del PIC (patilla VSS del PIC). Y hazlo en un ordenador de sobremesa (el JDM no funciona en ordenadores portátiles).
Si aún así no te funciona, tira ese programador y busca otro diseño en internet, porque los hay a patadas, pero bastantes no funcionan bien, y muchos esquemas están tan mal hechos que inducen a confusión.