Hey all, first post so be kind to this newbie

I'm working on a database for a small .NET member-based website, and am storing my data in an Access DB. I have a quick question on using calculated fields, and am not sure if this is a "calculated fields" issue or not, but maybe someone can help.
The site I am working on uses a messaging system to allow users to message one another (among other things).
My tables are laid out like this:
tblContactInfo
AccountUsername
FirstName
LastName
Gender
DateOfBirth
etc...
tblAccountInfo
AccountUsername
AccountPassword
AccountType
etc...
tblMessage
MessageID
MessageFrom
MessageTo
MessageDate
MessageSubject
etc...
Now in this database the tables are linked with relationships, with MessageTo being a foreign key to AccountUsername in the tblAccountInfo table.
Now picture this, when a user sends a message using the system, it is retrieved by another user. Just say however that an administrator decides to completely delete one of the two users from the database, the message would be left with a dangling reference because of the way the relationship is set up. If I set up Referential Integrity on the names however, the reference is deleted, which leaves me with a problem, the message is deleted, but the
recipient loses the message completely. SO, if the sender is deleted, all of the messages they have sent are removed as well. (with the way it was set up, if the recipient is deleted, the message is deleted, but if the sender is deleted, the message remains with a dangling reference, and thus refuses to list properly when the user views messages on the site. I have since changed the databast to use a sort of calculated field, holding a non-relational "name" instead of an ID)
With that said, I'm looking for the best way to do this to maintain consistency, nullify dangling references, and if possible, maintain a best-practice solution.
I'm currently using what I believe to be a calculated field, instead of placing the sending users Username in the "MessageFrom" field, I'm creating a string of their first and last names (Lastname, Firstname) and placing that in the field. I'm just not sure if this is the best way to do it because of the use of the calculated field, it does however remove the dependency of the message on the user's information, and seems to work quite well.
I'm just a little confused as to whether there is a better way to go about doing this, should users perhaps never be deleted from a database once they are inserted? Or should I be using a "Lastname, Firstname" field the way I am, or is there a better way? I've been slowly trudging through books and websites but haven't yet come to a conclusion, perhaps one of the db pro's on this site can help?
Sorry for the horribly long message, I hope it wasn't confusing.
Thanks for you help ahead of time!