Change PWM frequency

I have made a basic PC fan controller with a thermistor and a n-MOSFET for driving the fan.

But the low default Arduino freqency creates a loud buzz from the fan. This is even more noticable than normal as to get an accurate RPM I turn the fan on full for 100ms while counting the tach.

So how can I change the frequency to something greater than 20kHz (human hearing limit)?

Also I am using the 16-bit PWM pin.

If you need a motor controller that will operate above 20 KHz you need to look to connecting Arduino to a a professionally designed motor controller; try Dimension Engineering, Parallax, Roboteq or Robot Power.

I would like to do it on the Arduino itself, since it is only a simple fan motor controller.

I might have too look at writing my program in pure AVG-GCC as I notice the Arduino seems to take control over a lot of things like timing etc. without providing a way to change what it does.