Two things spring to mind:
1) You are setting the same string to two different values in successive lines of code:
WELCOME.Text = Session["Login2"].ToString();
WELCOME.Text = Session["Login4"].ToString();
The first will have no affect on the string as it's value will be overwritten.
2) The same two lines are the ones causing your problem.
If the value "Login2" (or "Login4") is not found in the session variables, then the returned value will be
null
- at which point the attempt to call the ToString method will fail with an "Object reference not set to an instance of an object." error.
Check them before you use them:
object login2 = Session["Login2"];
object login4 = Session["login4"];
if (Context.User.Identity.IsAuthenticated && login2 != null && login4 != null)
{
WELCOME.Text = login4.ToString();
}