Well, its time to buy the real thing - I've got a knock-off pickit2 device and that is what is most likely happening - Defaulting to 5v only.
I have a cheap PICkit clone. It did say 5V devices only on the ebay page but I don't have any 3V devices so it isn't an issue for me.
How about using a header and connect the power via jumper, so the PIC's power has to be disconnected before the programmer can be connected? Again probably not much help for your existing board but might be a good way of doing it in future.
I think that a header (with a bunch of diodes and some transistors, gates or comparators) could make the job, translating levels in and out from the PicKit.
Moreover, there are some low-power PICs (for example, one I used, the PIC18F26K20, running at 3.6V max) for which the 12V Vpp is above the abs.max.rating, and they require a protection (usually with a zener diode). With the ICD2 debugger, when you set the device into MPLAB, if it is a low-voltage one it comes out with a warning saying that a protection from the 12V must be put there by the user.
So I think that a good header for level translation and protection would be useful, although easy to make and cheap.
Wow... I just reviewed your diagram and you forgot to add the diode for the ICSP mode. That diode prevents current flowing from the 13V at Vpp to the 5V supply. You should implement it as the Pickit2 manual says.
Maybe I don't catch you, but... How can a 470 Ohm protect from the 12V Vpp, since it will go in series with the 10kOhm pull-up? The diode would be a solution, but I wonder if it is really needed (since the same 10k resistor).