That was pretty quick!

I've been playing with the program here and can say that the two PAUSE 25 statements, have to GO.

Of course that messes up the LED's, but with the pauses in there, it only picks up every 7 or 8th character when sending continuous data.

Without them, it works pretty good, but it's still a bit slow.
Test data of about 1500 bytes takes nearly 3 times as long as it should. Around 1.2 sec.

I think circular buffers would help speed it up, since it has to wait till it's finished sending the HSEROUT before in can receive more data from the USB. But I guess that depends on how fast you need it to be.