Technical answer: No. No way. Username is the attribute of object User. So for that object, attribute Username can only have one value.
Functional answer: Sure. Many ways. Rene's answer is one of them. Installing a logginHandler is a second. Also: a normal login using email as value and install a second login-function using an sms sent to your phone. And if you want to make it most easy for your users: implement an SSO
Not out of the box. The System.User/Name is a single string attribute. And can only contain a single string.
But you could add a second attribute to Administration.Account. create a login page using the default page template of Atlas ui. This provide a NP entity object with a username and password as string. And a login Nanoflow.
Instead of directly logging in, you could call a sub microflow, which retrieves the user .atinv the username provided. Then return the System.User/name and use that to login using the provide password by the anonymous user.
Beware that security is at stake, so this must be modeled with care