C'e` un errore di indentazione (che non pregiudica l'uso della funzioen, ma crea confusione all'umano.

Provo a riscrivere la funzione (sistemando le indentazioni come piace a me per poterle seguire meglio), e ti inserisco degli alert:
codice:
<html>
<head>
<script type="text/javascript" language="javascript">
function isCodiceFiscale(obj) {
  var nTempNum;
  var nAppoNum;
  var i;
  var szTempCodFisc;
  var szLastChar;
  var szValued;
  var szInValued;
 
  szCodFisc = obj.value;
  alert("test1: "+szCodFisc);	 

  if (szCodFisc.length<16) {
    alert("Caratteri insufficienti");
    obj.focus();
    return false;
  }
  if (szCodFisc == "") {
    alert("Campo vuoto");
    obj.focus();
    return false;
  }

  szCodFisc =szCodFisc.toUpperCase();
  szLastChar = szCodFisc.substr(szCodFisc.length - 1,1);
  szTempCodFisc =szCodFisc.substr(0,szCodFisc.length - 1);
  nTempNum = 0;
  i = 0;
	 
  while (true) {
    szValued=" B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYYXX";	// I DISPARI
    szInValued=szTempCodFisc.substr(i,1);
    nAppoNum = szValued.search(szInValued);
    nTempNum = nTempNum + (nAppoNum &  0x7FFE) / 2;
    i++;
    if (i>15) break;

    szValued=" A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ";	// I PARI
    szInValued=szTempCodFisc.substr(i,1);
    nAppoNum = szValued.search(szInValued);
    nTempNum =  nTempNum + (nAppoNum &  0x7FFE) / 2;
    i++;
  }
  nTempNum = nTempNum % 26; //mod
  szValued="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  szValued= szValued.substr(nTempNum, 1);
  if (szValued==szLastChar) {
    alert("Codice Fiscale valido");
    return true;
  } else {
    alert("Codice Fiscale non valido");
    obj.focus();
    return false;
  }

//  if ((obj.value=='') && !isCodiceFiscale(obj)) {
//    alert("Codice Fiscale non valido");
//    obj.focus();
//    return false;
//  } else {
//    alert("Codice Fiscale valido");
////    obj.form.cod_fisc.focus();
//   return false;
//  }
}
</script>
</head>
<body>

<form name="form1">
Codice Fiscale

<input type="text" name="fiscale">

<input type="button" value="aaaaaaaaa" onclick="isCodiceFiscale(this.form.fiscale);">

</form>
Ho trovato anche un uso improprio dell'oggetto form1 (non definito all'interno della funzione) - corretto

L'ultima parte, in cui la funzione richiama se stessa passando lo stesso parametro non riesco a seguirla, e la ho tolta, sostituendo i messaggi nei vari return.

Non so se ora funziona (e` un po' troppo complesso, e non ho tempo di implementarlo io), ma provalo.