For low frequency noise, meaning 1/f noise: BJTs typically have better performance, but if you have to use CMOS, often a PMOS input stage is best. Big input devices also help this. There are also some circuit techniques to deal with low frequency noise such as autozeroing, chopper modulation, CDS, etc..
For wideband (thermal) noise, as was mentioned above, you want to burn a lot of power to reduce the noise -- but you have to burn 4x more power to get a 2x reduction in noise...