When you read the .HEX from the PIC with your programmer, just click the C to view the config settings embedded in the .HEX file. Like you did in post #4.

If it reads back with the settings you expect, then I would have to suspect a bad oscillator, caps, or something in the external osc circuit causing a problem.

Double check those SMD caps to make sure they're not resistors...;o)