eso es por que toma el texto como cadena y no como valor....... ps para eso existe la funcion 
eval. 
ahora, lo mejoras si validas que cuando no sea un numero (ya sea letra o este vacio) con la funcion 
isNaN, y ps le das un valor por defecto, como los que he puesto ahi.    
Código html:
Ver original<input type="text" name="alto" value="1" onkeyup="actualiza()" /> <input type="text" name="ancho" value="1" onkeyup="actualiza()" /> <input type="text" name="largo" value="1" onkeyup="actualiza()" /> <input type="text" name="suelto" value="0" onkeyup="actualiza()" /> <input type="text" name="total" value="1" readonly="readonly" />  
function actualiza(){
    alto = eval(form.alto.value);
    ancho = eval(form.ancho.value);
    largo = eval(form.largo.value);
    suelto = eval(form.suelto.value);
    if(isNaN(alto)) alto = 1;
    if(isNaN(ancho)) ancho = 1;
    if(isNaN(largo)) largo = 1;
    if(isNaN(suelto)) suelto = 0;
    form.total.value = alto * ancho * largo + suelto;
}
  
Un gusto ayudarte. 
espero ese karma ps.........  =P 
Suerte y cuando desees.