Hi Malcolm,

I'm affraid there's not enough code posted to be able to find your problem.
I think what you've posted is the part you've gone over a hundred times and couldn't see anything wrong. So maybe there's nothing wrong there.
It's likely the problem is somewhere else.

The RX_READY bit is simply copied from the Hardware USB status register on every USB interrupt.
If it never goes high, then either nothing is being sent from the PC, or the data has been collected already before you displayed RX_READY on the LCD.
I would suggest enabling the USB Status LED's so you can see what's happening in real time.

Code:
; --- Each USB LED is optional, comment them if not used ----
DEFINE USB_LEDPOLARITY 1       ; LED ON State [0 or 1]  (default = 1)
DEFINE USB_PLUGGEDLED  PORTB,0 ; LED indicates if USB is connected
DEFINE USB_TXLED       PORTC,2 ;  "      "     data being sent to PC
DEFINE USB_RXLED       PORTC,1 ;  "      "     data being received from PC