Por eso digo lo del dato antiguo, el dato antiguo seria el valor recogido anteriormente en la base de datos, que en tu caso seria el mismo que recoje en el siguente bucle, asi de la forma que te he dicho solo te apareciria solo una vez puesto que siempre es =, unicamente tendria que variar un poco el codigo en vez de dentro del if poner el echo es guardar esa variable y una vez sales de bucle poner el echo
Código PHP:
$presupuesnuevos = mysql_query("SELECT * FROM presupuesto",$connection);
echo "<tr><td><font color = \"blue\" size = \"3\" face = \"times new romans\"><b>Nombre de Presupuesto Nuevos:<font color = \"green\" size = \"3\" face = \"arial\"><b>*</b></font><td></b><select name = \"presupuestosubido\"><br><br>";
echo "<option>ELIJA PRESUPUESTO</option>";
$i=0;
$variable_antigua="";
while($rows = mysql_fetch_assoc($presupuesnuevos)){
if($row[$i]!=$variable_antigua){
$variable=$row[$i];
$variable_antigua=$row[$i];
$i++
}else{
$variable_antigua=$row[$i];
$i++
}
echo "<option>$variable</option>";
echo "</select></td></tr></table>";
no se si es del todo correcto el codigo, pero la idea es esta.