Few things:
  1. we don't know your baudrate
  2. why not using the internal USART to have faster baudrate
  3. Do you send the whole dump file of your EEPROM?
  4. How your EEPROM dump is saved... .Bin, .Hex

Personnally, when i do stuff like that, i send the whole EEPROM dump from the PC to the PIC packet/packet or, if you prefer, Array/Array with a specific packet size... So you just need to use something like HSERIN [YourArray] TADA. Your PC software always send a specific amount of BYTE.

NOW, if you can do it with Hyperterm but you must use the Flow pin to tell the PC to stop sending character, Get your result write them to your EEPROM, tell PC to send ... and so on.

To know if the transmit process is finish... many ways to know but my favourite is often to use the Timeout option... let's say 1 0.5 secondes or more.

I got better results with my own VB program... but i understand your point about the MAC... still unsure if they will be able to run the program with "virtual PC"... on all the other PC it shouldn't be a problem if you do a installation program wich will include all Dll and blah blah. But i guess that you'll void everything if you compile your program and ask for a .EXE package.