Creo que la única manera confiable de detectar estos estados es comprobar la visibility API que ofrece HTML5 (esto sigue siendo una característica experimental), que ofrece ciertas propiedades y eventos
document.hidden // Returns true if the page is in a state considered to be hidden to the user, and false otherwise.
document.visibilityState // Returns a string denoting the visibility state of the document
también puede reaccionar a los cambios de la visibilidad
document.addEventListener("visibilitychange", function() {
console.log(document.hidden, document.visibilityState);
}, false);
Tenga en cuenta que esto no funciona en el navegador cruzado y solo está disponible en ciertas versiones del navegador.
¿Qué pasa si se trata de ¿en algún lugar entremedio? Rara vez uso ventanas maximizadas. – RobG