como visualizar uma imagem antes do upload em vários navegadores

Quero mostrar a visualização de uma imagem antes de ser enviada. Eu encontrei uma solução parcial que funciona para ie6 e firefox, e ainda não testei em ie7 ou ie8. Mas eu quero uma solução que funcione no safari, ie7 e ie8 também. Aqui está a solução obtida combinando a solução ie6 e firefox:

function preview(what) {
if(jQuery.browser.msie) {
document.getElementById("preview-photo").src=what.value;
return;
}
else if(jQuery.browser.safari) {
document.getElementById("preview-photo").src=what.value;
return;
}
document.getElementById("preview-photo").src=what.files[0].getAsDataURL();
//  alert(jQuery("#preview-photo").height());
//  alert(jQuery("#preview-photo").width());
var h = jQuery("#preview-photo").height();  
var w = jQuery("#preview-photo").width();//assuming width is 68, and height is floating
if ((h > 68) || (w > 68)){
if (h > w){
jQuery("#preview-photo").css("height", "68px");
jQuery("#preview-photo").css("width", "auto");
}else {
jQuery("#preview-photo").css("width", "68px");
jQuery("#preview-photo").css("height", "auto");
}
}
}

A parte getAsDataURL () funciona no firefox, e a parte "src = what.value" funciona no ie6, mas o que funcionaria no safari, e o "src = what.value" também funciona no ie7 e no ie8? Se não, existe alguma solução que também funcione lá? Ficarei feliz se eu conseguir que a visualização da imagem funcione em 5 ou 6 navegadores. Se não, então é a única opção para ter dois formulários com parte de upload de imagem de outro formulário?

questionAnswers(5)

yourAnswerToTheQuestion