Do you have a link to the datasheet of the LCD? To check ...
Can you post a minimal sketch that shows this behavior?
It can also be a problem in the initialization, some LCD's have an externally 16x4 display but internally it is 20x4 so the intialization might go wrong.
Setcursor in the LiquidCrystal lib uses colum and row and hardcoded offsets which might not fit your display
You are holding your display vertically - try turning it 90 degrees.
Fortunately this error won't currently cause any problems because all that the LiquidCrystal library does with the information is check to see if the second number is greater than 1. It could cause a problem in the future if they ever get around to expanding the library to account for things like the address offsets mentioned previously.
sometimes when I plug in the Arduino nothing shows up on the screen and other times garbage!
I have no idea why. Any ideas?
This is a symptom of an LCD module that is improperly initialized.
I took a look at your data sheet and it appears to be HD44780 compatible EXCEPT for the instruction execution times. The Clear Screen instruction is only slightly longer than the Hitachi, the Return Home is actually shorter, but the real problem is with all the other instructions. The New Haven device is specified at 600uS whereas the Hitachi is 40 uS. Even if the 600 was supposed to be 60 it is still 50% longer than the Hitachi.
The LiquidCrystal library exclusively uses software time delays and those delays are geared to the Hitachi specifications. The New Haven data sheet recommends using the busy flag (which requires the use of LCD pin 5 (R/W). The current LiquidCrystal library does not use the busy flag even if you implement pin 5 so don't even try. I suggest that you check out the LiquidCrystal440 library (it may have a new name, search for it) which does implement the busy flag.