Hola:
El nuevo problema requiere un nuevo planteamiento, ya que el uso de setTimeout (al igual que setInterval) tiene como primer parámetro una cadena, y ese "this" (this.form) es un objeto, por lo que hay que buscar la forma de conseguir que sea una cadena...
Si hay varios formularios, se puede averiguar el índice del mismo... voy a intentarlo:
function validarCantidad(frm) {
// controles que necesites...
for (i = 0, total = document.forms.length; i < total; i ++)
if (document.forms[i] == frm.form)
setTimeout("document.forms[" + i + "].submit()", 2000);;
}
Creo que me salió bordado... pruébalo y nos cuentas.
Saludos