Agregale un AND al WHERE que se fije el precio, que a su vez tenga un if que haga el mismo trabajo que hacés en el ORDER BY.
Algo como esto:
Código SQL:
Ver originalSELECT * FROM productos
WHERE producto='$producto'
AND color='$color'
AND $precio_mayor_a < IF (moneda = 'us$', precio*4.5, precio)
AND $precio_menor_a > IF (moneda = 'us$', precio*4.5, precio)
ORDER BY (CASE WHEN moneda='us$' THEN precio*4.5 ELSE precio END) DESC
$precio_mayor_a es precio mínimo
$precio_menor_a es precio máximo.
Eso trendría que funcionar.