C'e` qualche problema nella logica dello script, che pero` non dovrebbe influire sul funzionamento.
Ad esempio la variabile popup_aperta non viene mai messa a true.

Comunque la riga
if (window.focus) {newwindow.focus()}
puoi scriverla semplicemente come
newwindow.focus();
(non serve testare se ilfocus e` sula fienstra corrente; potrebbe anche essere su qualcos'altro).


Pero` se il browser ti impedisce l'apertura della popup, quello che succede e` che tenti di dare il focus ad una stringa, quindi devi inserire un controllo se la fienstra esiste prima di darle il focus.

Io farei cosi`:
codice:
var newwindow = "";

function check_aperta() { 
  if (typeOf(newwindow)=='object' && !newwindow.closed) { 
    alert("la popup e` stata aperta"); 
  } else {
    alert ("la popup non e` stata aperta"); 
  } 
}

function popitup(url) {
  if (!newwindow.closed && newwindow.location) {
    newwindow.location.href = url;
  } else {
    newwindow=window. open(url,'chat','height=200,width=150');
    //setTimeout('check_aperta()', 1000); 
  }
  if (typeOf(newwindow)=='object' && !newwindow.closed) {
    newwindow.focus()
  }
  return false;
}
Ho qualche dubbio su cosa ritorna il typeOf di una finestra quando e` stata aperta. Eventualmente aggiungi un
alert("tipo = " + typeOf(newwindow));
prima del test, per verificarlo.