PIC 18F2550 External Interrupt Problem
PIC18F I/O ports have a Latch register for output, and a PORT register for input. Writing to the PORT address writes to the Latch register. 

Diagram from PIC18F2550 datasheet)



To test a pin state you must read the PORT register. Therefore to read the state of the button you should change each occurrence of LATBbits.LB0 to PORTBbits.RB0.

Writing to PORT bits is OK, just realize that to write an individual bit the MCU must first read the PORT register, then change the bit, and finally write the result back to the register (this is called a 'read modify write' operation). If any pins other than the one you are modifying are being forced low or high by external circuitry (eg. Base of a transistor or a 'large' capacitor) then the corresponding Latch bits will be set to the pin values, overriding what was previously in the Latch. This can cause output bits to flip unexpectedly. To ensure that output bits do not get disturbed it is best to reference the Latch register when manipulating bits, eg. LATCbits.LC7 = 1.