LCD quirk after long run time? (Duemilanove w/ Winstar WH1602B)

Hello,
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?

I guess it must be so.
Problem is that it's not as easy as uploading to your Arduino, to check (read out / download) the program present in your Arduino to see if some bits "fell over".

You could check your code to see if some memory problem could occur when running for a very long time.
Something like a counter overflowing over and over again.
Or some variable that is orphaned in a for next loop.

There's really nothing to say without someone checking your code.