Hi Shane,
Let me answer the second part first.
Simply put, no, you can't send the message back to the user. And to be honest, you probably don't want to.
For security reasons displaying internal errors to users, while convenient during the development phase, often results in "teaching" the user more about your system than you want them to know. Many systems have been compromised (not NetTalk, but generally speaking) because the error message helpfully contained the name, and password of the database being accessed. Plus there are other issues which I won't go into here.
During development your goal is to make sure messages don't pop up. Not because you've suppressed them, but because you did you saw them, and added code to prevent that hole in your app.
Clearly though, you might miss some, and so you need to suppress-and-log for the real deployment. This is a bit dangerous though because unless you know the message, you don't know what the result of the message will be. ie a Message often asks the user to make a decision, as they can't see it you need to make the decision for them (ie accept the default answer) - and the effect of that answer is unknown (because it relies on the code which called the Message in the first place).
The best way to "suppress" the messages is to use the MessageBox "timeout" feature. You can set the timeout for the message windows to be say 10 seconds, then you'll see them as a developer, but they close if you're not watching them.
Ok, now to setting the user variable for the person who is logged in.
This is difficult at the moment because the main MessageBox class is unthreaded, and as you've probably figured out, the user name belongs to a thread. I'll be working with Geoff on this to see what the best solution is.
Cheers
Bruce