Semplicemente perché la condizione non viene più riletta, puoi risolvere utilizzando setTimeout()
codice:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var wActive = true;
var numAttuale = 10;
function upd() {
if(wActive === true) {
if(numAttuale > 0) {
$("#secs").html(numAttuale - 1);
numAttuale = parseInt($("#secs").html());
if(numAttuale>0) setTimeout("upd()", 1000); else alert("Ciao");
}
}
}
setTimeout("upd()",1000);
</script>
<div id="timer">Attendi <span id="secs">10</span> secondi</div>