I am using a Sanguino board with a 4X20 LCD display, on windows XP. I used the "official" LCD library for the interface. The 8 bit constructor worked very well but the 4 bit constructor did not. Working with the Sanguino folks, we found that the constructor LiquidCrystal() that takes 7 arguments (using 4, rather than 8 data lines) will not work if connected to d0, d1, d2, and d3. Documentation should direct users to connect to d4, d5, d6, d7. So, instead of:
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3)
it should be
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
Looking at other libraries and other implementation of 4 data lines to an LCD character display, I'm pretty sure this is not an Arduino vs. Sanguino issue. There are no problems with the code itself.
Hope this is of some use and saves someone some aggravation.