I would think it's because you set the baudrate within this loop, and it need some time for the USART to initialize/settle. Usually, you want to set the USART at the top and only once. So my guess is to move the @ USART_Init 9600 line before the main.

You could still place the following lines at the top of your code (with all other register init), and forget @ USART_Init
Code:
RCSTA = $90 ' Enable serial port & continuous receive
TXSTA = $20 ' Enable transmit, BRGH = 0
SPBRG = 25  ' 9600 Baud @ 16MHz, 0.16%