It depends on how much money you want to spend. IMO the best resource would be Wise for Windows Installer, however it is not cheap. You can also use Installshield which I personally don't like as much. There is an application that I believe comes with Server 2003 and is called something like 'Installer Lite' I haven't used it and I've heard it is somewhat limited. MS Visual Studio has a deployment piece that will create MSIs. You can always get the Windows Installer SDK from Microsoft for free. It comes with an app called Orca that will technically let you create MSIs, but you would be doing everything by hand. While this is possible for very small and simple deployments (I've done it), if it is at all complicated, this method is quite difficult.
If you are not limited to MSIs (which I happen to prefer in general), then there are some other free install systems out there. Two of te best IMO are Inno and NSIS (Nullsoft).
[red]"... isn't sanity really just a one trick pony anyway?! I mean, all you get is one trick, rational thinking, but when you are good and crazy, oooh, oooh, oooh, the sky is the limit!" - The Tick[/red]