potrebbe valere la pena cercare di fare qualcosa con la proprieta' max-width dei css

restando in campo javascript
se non fosse necessario specificare width e height nel markup sarebbe semplicissimo
codice:
[img]...[/img]640)?640:this.width; // idem per l' height" />
il problema e' che vanno specificati e cosi' il this.width e' quanto hai specificato nel width

dubito ci siano metodi piu' immediati, ma l' alternativa che mi viene in mente e' creare un nuovo oggetto image, prenderne le misure e settarle come width e height dell' immagine originale
(a cui ne avrai fornito di fittizie nel markup)
codice:
function resizeImage(im){
	var k=new Image();
	k.onload=function(){
		var w=this.width;
		var h=this.height;
		im.width=(w>640)?640:w;
		im.height=(h>480)?480:h;
	}
	k.src=im.src;
}
[img]...[/img]

non so se cosi' il gioco vale la candela...