If you find a fan with PWM control, you can probably do that. These will be 4-wire fans.
Basically, this is the hierarchy of PC fans:
1) Two wire fans have a positive and negative wire, and run at a constant rpm for a given voltage. There's no control or feedback. You can "control" these by either chopping the voltage (with a transistor driven by a PWM signal) or linearly controlling the DC voltage.
2) Three wire fans have a positive and negative wire, and a tach wire. They function EXACTLY the same as a two wire fan, but they have a feedback mechanism (the third wire). The third wire does not let you control the fan. Instead, it provides a pulse (two per RPM) to allow you to determine the speed the fan is running at. You can control these fans the same ways as mentioned above, with the caveat that PWM'ing the power source for a 3 wire fan will mean that the tach signal becomes useless, as the circuit that creates that signal (from a hall sensor on the fan) won't be powered when the PWM signal is low, so you'll "miss" pulses.
3) Four wire fans are just like three wire, but they also have a "PWM" wire. There is a controller inside the fan that interprets the signal on the PWM wire and controls the fan's speed. It's not always a 1:1 duty cycle ratio, often the fan's internal controller will apply some sort of logic depending on the fan's original intended use (i.e. it'll have a minimum cutoff point where it shuts off below a certain duty cycle, or it'll revert to a minimum RPM when the duty cycle drops below a certain point). 4-wire fans were created to allow a PWM signal to control the fan while still retaining the tach signal, and also to allow the fan to carry intelligence as described above. This can be a failsafe mechanism such that the fan will behave in a known state if the controller stops sending a PWM signal, for example. 4-wire fans can also be controlled by PWM'ing the power source, as described for 2-wire fans, with the same caveat that doing so will mean that the tach signal will be useless.
The lowest common denominator is that ALL of these fans can be controlled by PWM'ing the power source, or by directly controlling the input voltage. The real caveats are that PWM'ing the power source can be noisy, as most fans will exhibit "growl" at the PWM frequencies you're likely to be generating from something like an Arduino. The bad thing about the other option, controlling the voltage, is that many of these fans will have a point where they start to behave inconsistently - if you drop the voltage below a given point, they might just stop suddenly after a few minutes, or they might not start if your starting voltage is too low.
There's a whole niche of fan controller circuits out in industry, with all kinds of different features to solve the above problems. You can pretty easily recreate most of these features with a microcontroller, but to me, after a point, it all becomes moot. Most of the applications where highly featured fan control are important are very dynamic environments. Think about the PC on your desk. It's sitting there idling along, and then all of a sudden you tell it to play a big video file, or render some complex graphic, and the processor's thermal load increases tenfold, for a few minutes, then dies back down. The fan needs to needs to be able to adjust to that sort of incredibly dynamic load.
By contrast, most of the things on a fish tank that need cooling are incredibly predictable. LEDs, for instance, will follow the same pattern of warming up, churning out a predictable amount of heat for 8 or 10 hours, then cooling down. To me, this means that it's less important to have a dynamic thermal management approach, because you can design to the known load and then add a failsafe (thermal sensor on the heatsink, or some way to detect the fan has stopped) and be done with it.
Just food for thought...