C'e' un po' di confusione nella logica e negli eventi... prova:
codice:
<script language="javascript">
function formatoData(txt){
var re = /^\d{2}\/\d{2}\/\d{4}$/
if(re.test(txt)){
	var adata = txt.split('/');
	var gg = parseInt(adata[0],10);
	var mm = parseInt(adata[1],10);
	var aaaa = parseInt(adata[2],10);
	var xdata = new Date(aaaa,mm-1,gg)
	if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg)){
		return true;
	}
}
alert("Data inesistente.\nImmettere nuovamente la data usando il formato: \nDD/MM/AAAA");
}
</script>
<input name="data_fattura" type="text" class="form_text" id="data_fattura" size="20" onblur="formatoData(this.value)">
ciao