Still strange and still reaching here .... a long shot but it sounds like TRISB.0 could be getting changed somewhere during or after the Pause (by an erroneous interrupt?) – do you have an LCD hooked up where you can output the value of TRISB after your Pause that resets RB0 high?. The thought being you could monitor and see if it is getting changed. If you do not have an LCD or similar, you could put some lines like this in code AFTER the PAUSE for debugging purposes.

Code:
IF TRISB.0 = 1 THEN
	High PortB.7	' or whatever pin you have available
ELSE
	Low PortB.7
ENDIF
Pause 10000     ' measure PORTB.7 and see how TRISB.0 is set
Let us Know

Sounds like an OSC issue to me.
Sayzer ... OSC???? - I am interested in your theory – can you explain?