As you said, onFirstInteractive() fires the first time (and only the first time) a viz is "ready" for a user to interact with it. Displaying the login form is not displaying a viz, so we can't expect your code to execute.
isInteractive was a property that never made it into the final API. It was part of early v8 betas and cut before the final API was released.
You'll likely need to use non-Tableau mechanisms to try and determine what is being displayed inside the div.
I have no samples for you, but I'd think You could simply detect a change to your div (like this: Jquery Event : Detect changes to the html/text of a div - Stack Overflow)
...and then try to read the innerHtml of the div to detect the difference between a login form and a real viz...if login form, you fire your code...if viz, you let onFirstInteractive do its thing for you.