Just a few lines to share my experience with I2C - 20X4 LCD display. Sometimes it works perfectly sometimes garbage appears all over the display. I checked my code and couldn't find anything wrong.
I started to think it was an hardware problem. I touched the I2C module and garbage appeared immediatly. I thought it was a bad solder so I heated each I2C pins connected to the LCD display. Problems disappeared for sometime but garbage was back few days later. I decided to order à new I2C board to interface the LCD display which is much less expensive than changing the 20X4 display.
This was the problem. No more problems after changing the I2C module.
So if you experience occasional display problem, look at you I2C module, touch it, twist it, try to lift it, etc... if garbage appears ... you have a good indication of where your problem could be.