I valori selezionati nella multiple devono essere tre, nè uno in meno e nè uno in più.
Nessuna idea? Con la ricerca ho trovato questa ma accetta anche 1 e 2 valori:

codice:
<SCRIPT>
var vecchie = new Array();

function conta(s) {
	quante = 0;
	nuove = new Array();
	for (var i=0;i<s.length;i++) {
		if(s.options[i].selected) {
			quante++;
			nuove[i] = true;
		} else {
			nuove[i] = false;
		}
	} 
	if(quante>3) {
		alert("Troppe!");
		for (var i=0;i<s.length;i++) {
			s.options[i].selected = vecchie[i];
		}
	} else {
		vecchie = nuove;
	}
}
</SCRIPT>

<select size="6" name="preferenza" multiple onchange="conta(this)">