OK, I've mentioned overall throughput a few times so we'll assume that
a) the overall rate of data in is < that of data out
b) flow control is happening
In this case all you should need is a simple ring buffer and the pseudo code should look something like this
if (serial.available() != 0) {
add_char_to_buffer(serial.read());
if ( buffer_nearly_full()) sendXOFF();
}
if (buffer_is_not_empty()) lcd.print (get_char_from_buffer ());
if (buffer_is_not_full()) sendXON();
Rob