The easiest way would be to have the chat screen update several times during the loading process, so it appears to be doing the loading and allowing the chat at the same time. Your still gonna have delays when loading big files, but it all depends on how you handle it.
For example, say your chat screen was wrapped up in a function called chat()...
chat()
load image "test.png",1
chat()
load object "test.x",1
chat()
open to read "test.dat",1
for x=0 to 100
for y=0 to 100
read byte 1,b
map(x,y)=b
next y
chat()
next x
That's untidy of course, I would suggest having a custom function for loading media that executes the chat function as well as some error trapping - you could even share a console screen, so you get error messages in amongst the chat.
The chat function would need to be pretty quick at checking for keyboard input, and new incoming messages, like in and out as quickly as it can. It will also slow down the loading process - but I say 30 seconds of chat is far better than 10 seconds of loading.

Health, Ammo, and bacon and eggs!
