I think you would probably have to use mod_rewrite to do that. Unfortunately I don't really have any experience with mod_rewrite so I cannot tell you exactly how to do it.
There would really be no other way of doing it because the "~" before the username is what tells Apache to actually look in "/home/username/public_html" or whatever. If the tilde is not there, as far as Apache is concerned you're trying to go to a directory called that.
Maybe someone else here can tell you how to do it using mod_rewrite...