If you don't mind spending money, InstallShield has always been a top notch installer. I've used it many times and it can be customized a million different ways. Unfortunately, the price is a little salty.
For a free solution, Inno Setup works very well, however, it cannot create MSI's. It can only create .EXE executables.
As Reed suggested, Wix is also a very good option as well!