Arm development board with lots of PWMs
TLC5497 has 24 channels of 12bit PWM.  Just shift the data in serially and latch it.
http://focus.ti.com/lit/ds/symlink/tlc5947.pdf

You can control one of them with three Arduino pins (or possibly less, using Roman Black's Shift1 protocol - http://www.romanblack.com/shift1.htm )

They can also be strung out in series to control as many as you like with the same three Arduino pins (check the example on page 1 of the datasheet).  The only drawback is that as you add more chips in series of the same serial stream it'll take proportionally longer to shift all the bits in for each refresh.  If you don't like this performance cut, you can use another pin as another serial stream and use the same CLK and XLAT pin, and cut your refresh time in half again (by running half the chips off of stream A and the other half on stream B).