Separar sólo por los espacios es incompleto pues no se están contando los retornos de carro y si hay espacios seguidos también los contabilizará.
Creo que lo óptimo es usar una expresión regular
Dejo un ejemplo
Código:
<script type="text/javascript">
pat = /\s/
function pepe(val){
val = val.split(pat)
alert(val.length + " palabras")
}
</script>
<textarea cols="60" rows="10" onblur="pepe(this.value)"></textarea>
Un saludo