Each time a button is pressed (or released), this doesn't result in a clean transition from Vdd to GND (from GND to Vdd). Lots of transitions between the two states happen for millisenconds. Since the PIC run fast, it could read this 'noise', causing unpredictable behaviour.
De-bouncing allows you to interpret the change in switch state correctly.
With the most basic implementation in software, you check the switch and when its state has changed, you generate a 20 ms delay (this is considered enough for most switches); then, you check again the state of the switch (assuming that it's staying in the same state), and take actions accordingly.
Since you have already a delay elsewhere in your code, that might work if it is increased to about 20 ms; how much delay do you have now?
Code:
if ( ( PORTB & 0b00100000 ) == 0b00100000 )
How is the switch connected? It is common to have a pull-up resistor (from RB5 to Vdd) and the switch to ground; if this is the case, you should be checking for a logic 0 at the PIC input (switch closed).