Mh...
Ich kann Dir nicht versprechen, dass es geht. Ist nur mal eben zusammengezimmert ...

Code:
<script language="JavaScript" type="text/javascript">
<!--

var p = "2,10";
p = p.split(',');
p = p.join('');
var b = "5,00";
b = b.split(',');
b = b.join('');

var w = b-p;
var mu = true;
var zwei = true;
var eins = true;
var fuenfzig = true;
var zwanzig = true;
var zehn = true;
var fuenf = true;
var nullzwei = true;
var nulleins = true;

while(w > "0") {

w--;
mu++;

if(mu == "200") {

zwei++;
mu = "0";

}

if(mu == "100") {

eins++;
mu = "0";

}

if(mu == "50") {

fuenfzig++;
mu = "0";

}

if(mu == "20") {

zwanig++;
mu = "0";

} 

if(mu == "10") {

zehn++;
mu = "0";

}

if(mu == "5") {

fuenf++;
mu = "0";

}

if(mu == "2") {

nullzwei++;
mu = "0";

}

if(mu == "1") {

nulleins++;
mu = "0";

}

}

document.write("Wechselgeld: "+zwei+" Zwei EuroStuecke");

//-->
</script>
Das ist auch eher provisorisch und sehr einfach, da ich gerade wenig Zeit habe.
Vom Prinzip her denke ich, ist es das einfachste: Du rechnest die Eurobeträge (mit den Kommata) in Centbeträge (ohne Kommata) um, indem Du einfach das Komma entfernst (mal 100 halt).
Danach rechnest Du die Differen, die hier 290 beträgt (500 - 210).
Die While-Schleife läuft nun 290 mal und zieht dem Wert (w) jeweils eins ab (w--) und rechnet auf mu (muenzen) eins dazu (mu++).
Wenn mu ganz genau gleich 200 dann rechnet sich zwei plus eins (zwei++). Das heißt, dass ein zwei Euro-Stück benötigt wird. Außerdem wird mu wieder auf 0 gesetzt, um erneut zu prüfen. Die 90 restlichen male wird geprüft, ob mu ganz genau 100 ist (was es nicht ist). Ist es ganz genau 50? Ja, nach 40 weiteren Durchläufen: Fuenfzig wird um eins erhöht (fuenfzig++). Dann noch 40 Durchläufe, wobei zweimal mu ganz genau 20 ist. Die Ausgabe müsstest Du dann noch Deinen Wünschen entsprechend anpassen. Ich käme somit auf 1*2€, 1*50 Cent und 2*20 Cent, was Du ja auch sagtest...
Korrekturen erwünscht, da nur mal eben prinzipiell zusammengezimmert .