You are inserting into a table from itself.
INSERT INTO tblLoginTime ( UserName, LoginTime, LogOutTime )
SELECT GetLoginUser() AS Expr1, Now() AS LogIn, Null AS LogOut
FROM tblLoginTime;
This means that every time you run this, you double the size of tblLoginTime. I think you should look up the VALUES keyword because none of the things you are inserting have anything to do with previous entries. Also, you don't need the AS clauses because the names are supplied from the INSERT INTO sub-clause. Finally, use a date of zero rather than a null because you cannot compare to a null. As it happens, even if you had a null field, you cannot write this: ... WHERE Null = Null ... because Null is NEVER equal to anything - including itself. You can EASILY test for a date field of 0 because that is a valid but unlikely date.
What you want MIGHT look like this.
INSERT INTO tblLoginTime ( UserName, LoginTime, LogOutTime )
VALUES (GetLoginUser(), Now(), 0 ) ;