Il metodo reset() non pulisce il form ma lo riporta allo stato iniziale con il quale e' stato ricevuto.

Per una "pulizia" del form hai bisogno di invocare una funzione, per esempio:

codice:
function azzera(myForm){
if (document.all||document.getElementById){
	myForm.reset(); // serve per type="file"
	for (a=0;a<=myForm.elements.length-1;a++) {
		myEl=myForm.elements[a];
		myType=myEl.type.toLowerCase();
		if(myType=="text"||myType=="hidden"||myType=="textarea"||myType=="password") {
			myEl.value="";
		}
		if(myType=="select-one"||myType=="select-multiple") {
			myEl.selectedIndex=-1;
		}
		if(myType=="checkbox"||myType=="radio") {
			myEl.checked=false;
		}
	}
}
}
Da richiamare passando come parametro il form stesso, per esempio da un button interno al form:

<input type=button value="Pulisci" onclick="azzera(this.form)">

ciao