First, if you haven't already, get a copies of the data sheets and read through them:

- PIC18F4520: http://ww1.microchip.com/downloads/e...Doc/39631E.pdf
- hitachi 44780: http://www.sparkfun.com/datasheets/LCD/HD44780.pdf

There are instructions on how to explicitly initialize the LCD on page 45, in case it does not automatically initialize - it would probably be a good idea to read through that.

Page 45 also indicates that you should be giving the LCD time before beginning to write commands to it - at least 15 ms. This is something I don't see in your code.

Your RS, R_W, and E settings appear to be correct, at a quick look.

There's not much more I can personally do without digging into the documentation, and without the hardware at my disposal. Try adding the delay before controlling the LCD. If this doesn't do it, try the initialization as listed in the data sheet.