I recently came across with the same situation where we have created Virtual user and also created some custom property. At the early stage it was working properly as Sitecore user works but one day suddenly it stopped working.
In my solution still Sitecore.Context.User.IsAuthenticated this was always true but all the profile properties was empty at this time. Then I started digging into our latest change we made for project and found we just added a view rendering on LogIn page (Login Item). And that rendering was having
var customPropValue = Sitecore.Context.User.Profile.GetCustomProperty("customProp");
code and some other code too.
To just test I removed the rendering from the login item and it seems functionality again started working because after login it was either redirecting me to home page or RedirectURL page.
Then it was proved that Virtual user was not working because of the new rendering which contains code to get custom property of user. I again applied that rendering to item and this time I removed all other code from the rendering and still keep
var customPropValue = Sitecore.Context.User.Profile.GetCustomProperty("customProp");
code into it and this time again issue was same I lost all the profile properties of virtual user.
At last I removed the
var customPropValue = Sitecore.Context.User.Profile.GetCustomProperty("customProp");
code from the rendering and it started working for me.
I want that code on other pages but not on login page so I added a condition on top if page is login page then don't execute this code and execute for all other pages. After making this change it started working for me.
On the other pages I was using same code so there was no issue with the code I found that issue is with the code on Login page. After login and redirect user on any page everything works perfect in virtual user.
I already opened a ticket in Sitecore for same they are into investigation why it is not working if we are getting any profile properties at the time of login.
We have tested this Virtual user functionality with multiple login at the same time and honestly it is working perfect. So I would say the Virtual feature is the really cool feature provided by Sitecore but on one point we need to be more careful. I hope Sitecore will resolve this issue in next releases or will provide patch for same.