Eventually I moved the data lines on PORTC and voila, the LCD is displaying characters as it should. Thank you guys for the help.

Here is the working code:

Code:
' display a message on the lcd

'--- defines
DEFINE OSC 8
DEFINE LCD_DREG PORTC ' portb is the port used for data lines
DEFINE LCD_DBIT 4		'the pin on port connected to LCD pin DB4
DEFINE LCD_RSREG PORTA	'pic port used for the RS line
DEFINE LCD_RSBIT 4		' port pin where RS pin is connected
DEFINE LCD_EREG PORTB	' PIC port where E pin is connected
DEFINE LCD_EBIT 3		' port pin where E pin is connected
DEFINE LCD_BITS 4		' 4 bit mode
DEFINE LCD_LINES 2		' 2 LCD lines
DEFINE LCD_COMMANDUS 2000	'delay between LCD commands
DEFINE LCD_DATAUS 50		'delay between data sent

'--- register configs
adcon1=$0F ' all digital i/o
trisb=0		' portb all outputs
trisa=0		'porta all outputs
trisc=0
intcon2.7=0	' enable pullups
osccon=$70	' oscilator configure

'--- main program
PAUSE 1000				' pause to let the LCD initialise
repeta:
high portb.0			' light led to see when main loop is running
LCDOUT $fe,1			' Clears LCD
LCDOUT $fe,2, "hello"	' Returns to beginning of line 1 and writes "string"
LCDOUT $fe, $C0, "world"    ' line 2
pause 1000				' pause to see it
goto repeta				' do this forever