I have seen PortB.7 on an 18F2420 when used as an INPUT read LOW (internally) and stay low despite external pull-up Resistors, Car Jacks and Cranes pulling the pin up (externally a scope shows the pin correctly as HIGH). Restarting the PIC causes the pin to read HIGH (as it should) but once pulled low it locks LOW until you restart again. Erasing and Reprogramming the PIC (with exactly the same program) clears the problem. This anomally has appeared on about 70-80 PICs out of about 1500 for this product (but only in the last two years) and that pin is used in less than 1% of total. I've not had time to investigate further as the particular product it goes into is pretty much at end-of-life.

I mention the above, because the 18F2420 is part of the family progression of the 16F876/877.

Try Erasing and Reprogramming the PIC.

Also have you remembered to set TRISB.7 for OUTPUT?