Yes, I think there's a problem with the programmer.
But I'm not referring to the U2.

Code:
CMCON0 = 7    ; disable comparator
And don't change individual outputs so fast. You will begin to see the Hardware R-M-W issue.
Either set them all at once, or put a small delay between changing separate pins.

Code:
OSCCON = %01110000   '8 MEG INTERNAL
DEFINE OSC 8                 ' TELL EVERYBODY
TRISIO = 0                     ' OUTPUT ONLY
ANSEL = 0                      ' DIGITAL
CMCON0 = 7

MAIN:
  GPIO = %00000111
  Pause 500         ' Delay for .5 seconds
  GPIO = %00000000
  Pause 500         ' Delay for .5 seconds
Goto MAIN
BTW. If you turn on "Verify After Programming", and it verifies ... the U2 is working properly and the chip has been programmed successfully.
To insure all sections of the PIC are being programmed, go to Options > More Options > Set Options to Defaults.