Is there a technical reason why most of desktop fans only have fixed speeds?
It comes down to the costs and the type of motors used to drive the fans.

The simplest and cheapest way to drive a motor using mains power is with a basic AC motor. Unlike simple DC motors where rotational speed is determined by the voltage supplied the speed of an AC motor is dependent upon the frequency supplied. Multiple speeds can be achieved by switching in different sets of windings within the motor however it becomes impractical to include more than a few speeds in this way.

In order to give variable speed you would either need to change the frequency of the power supply or convert the power to DC and then drive the motor that way. Either way the cost of the electronics increases dramatically.

While fancier desk fans already include low power DC supplies and electronics for controls and displays that is all cheap off the shelf stuff. All of the high power parts used to drive the motor are still AC.