la cosa si fa complessa ...
codice:
function trovadoppi(ff) {
  var ok = true;
  var listacampi = new Array();
  for(var i=0; i<ff.length; i++) {
    var nn = ff.elements[i].name;
    var diversi = true;
    for(var j=0; j<listacampi.length; j++) {
      if(listacampi[j] == nn) {
        diversi=false;
        alert("campi uguali: "+nn);
        if(!trattadoppi(ff,nn)) ok=false;
        break;
      }
    }
    if(diversi) listacampi.push(nn);
  }
  return ok;
}

function trattadoppi(f,n) {
  var ob = f.elements[n];
  var k = ob.length;
  if(k < 2) {
    alert("errore: mismatch");
    return false;
  }
  for(var i=0; i<ob.length; i++) {
    if(ob[i].type == 'hidden') {
      ob[i].disabled = true;
      k--;
      alert("disabilitato il campo hidden "+n);
    }
  }
  if(k < 2) return true;
  else return false;
}
Da chiamare con
<form ... onsubmit="return trovadoppi(this);">

Se c'e` un'altra funzione nell'onsubmit:
<form ... onsubmit="return (trovadoppi(this)) ? altrafunzione() : false;">