I have a 16x2 LCD (Winstar WH1602B-yyh-ct) displaying some stuff. No problems for almost a year, when it would be on for days or weeks at a time. Recently I had it going for over a month without turning the Arduino off or uploading anything new to it, or even reseting it, when the LCD started acting up: It started showing weird symbols, mostly '?' but also black squares etc. I thought that maybe there is a problem with the connection - the display is wired through a breadboard and the whole bundle ended up on the floor once when my 6 mo old son started exploring the room;) (This happened many weeks before the LCD problems started). So I checked the wires between breadboard and Arduino, then took out the display and pressed it into the breadboard again. The latter changed what was being displayed, but it still didn't show what it was supposed to. The next day I played around with it some more thinking that maybe one of the pins isn't contacting inside the bboard, and since then only the first row would show, the second is blank, even the pixels don't show up when adjusting the contrast pot. And, of course, the first row was still showing nonsense - mostly '?'s with other junk, sometimes moving left->right. I hit the Arduino's reset button a few times, but that didn't help.
A few days later I resoldered the LCD's pins, but that didn't fix anything.
Finally, I uploaded via USB the same program that the Arduino was running until now and THE DISPLAY WORKS AGAIN!!
So, could this be a problem with Arduino, for example if running for a long time something screws up and (in my case) starts to send junk to the display?