Try adding the following line after the lcd.begin statement in your code:
delay(500);
I have 2 Optrex displays, one with the Hitachi controller that doesn't need the delay and one with a generic controller (I think) that does need the delay. The second display would give me the blocks, then appear dead without the delay. Some controllers don't initialize as fast as others apparently.
HTH,
Tom