This section is comming soon...
I've tried programming PIC18F452, EEdata and Program Memory are ok. But...
Microchip suggests to leave unprogrammed fuse bits like 300000H and 300004H. Therefore they'll remain to FF when compiling with MPLAB.
When I check Fuse config in PicALL (P16PRO), I can see that (unused to 1), but when programming, verify fail. I've tried same chip into another programmer (ALL 11P2 by Hi-Lo System(Taiwan)). It automatically keeps unused bits to '0' so, when checking fuse before programming I can see only bit to 1. Program and verify goes ok. If I verify the chip already programmed with ALL11 with P16Pro verify goes ok.
I've forced (source level) by MPLAB al unused bit to 0. This works on Pic16Pro but isn't a good way... Implies modify in all new sources and old too.
So, problem seems you're considering unused bit to '0' verifying config bits.
I suggest modify clearing all unused bit while hex loading file. These makes more readable config bits and prevents error verifying fuse bits.