I've done video overlay in an application which required polling during the data display. If you have a spare FSR available, insert:
btfsc INTCONx,RCIF ; I forget which INTCON it's in
movff RCREG,POSTINC2 ; Or whichever FSR is free
at least once every 16 lines (it may be most convenient to do it every line). Only three cycles per line. If you do not have a spare FSR available, but your display code is expanded out rather than looped, then at least once every sixteen lines you need to use:
movff INTCONx,SerStatus+N ; N=0 for the first one, 1 for the next, etc.
... and then (not necessarily immediately)
btfsc SerStatus+N
movff RCREG,SerData+N
at a cost of three cycles on one line and two on another; at the end of the display:
lfsr 0,SerData
btfsc SerStatus+0
movff SerData+0,POSTINC0
btfsc SerStatus+1
movff SerData+1,POSTINC0
btfsc SerStatus+2
movff SerData+2,POSTINC0
...
movlw (SerData & 255)
subwf FSR0L,w
; W will now hold number of bytes received
; Data will be in SerData+0 to SerData+(W-1)
The trick is not to worry about figuring out what to do with data while showing the display. Just throw it someplace and sort it out later.