I do agree that you may find you want more than the standard 8-bit / 256-level PWM available on most Arduino. The difference between one level and the next, at the dimmest levels, will be quite noticeable.
I have made some code to handle 16 bit PWM, the Mega can control 11 channels:Code and explanation
After executing the project with analogWrite and IRLZ44N, I found out what you mean - the changes are not smooth. This code will be really helpful.