The only difference I can see between your example code and the code I use for LCD in my projects is that my code has
Code:
DEFINE LCD_COMMANDUS 2000               ' Command delay time in us 
DEFINE LCD_DATAUS 50                    ' Data delay time in us
After the definition for LCD_Lines

Code:
DEFINE LCD_DREG  PORTB                  ' LCD Data port
DEFINE LCD_DBIT  0                      ' starting Data bit (0 or 4)
DEFINE LCD_EREG  PORTB                  ' LCD Enable port
DEFINE LCD_EBIT  5                      '     Enable bit  (on EasyPIC 5 LCD)
DEFINE LCD_RSREG PORTB                  ' LCD Register Select port
DEFINE LCD_RSBIT 4                      '     Register Select bit   (on EasyPIC 5 LCD)
DEFINE LCD_BITS  4                      ' LCD bus size (4 or 8 bits)
DEFINE LCD_LINES 4                      ' number of lines on LCD
DEFINE LCD_COMMANDUS 2000               ' Command delay time in us 
DEFINE LCD_DATAUS 50                    ' Data delay time in us
I always use PORTB as I have an EasyPIC development board and that's the default wiring for the LCD, so can't comment on using pins on other ports for the enable / reset lines, but in theory, if they are set to digital it should be OK