Hi,
I'm not sure if that's your whole code or not. You should really have a small delay before your program starts to allow the Power supply to settle properly. There should also be a delay for the lcd to initialise properly before sending data to it. These are unlikely to be the cause of your problem but it's good practice. Try placing a PAUSE 500 before you send PORTB.4 high. 500ms delay before writing to the LCD should be enough time for the majority of LCDs to intialise correctly.
When you say power the LCD from PORTB you're not talking about the backlight as well are you? The PIC pins can only supply 25mA and some LCDs can take a lot more than that to light.
Just to check, PORTB.6 is not accidentally connected to one of the LCD pins is it?
Cheers
Rob
Bookmarks