Since I’ve moved to Windows 7, I had to make a few software changes.
To make Windows load custom software instead of using the default Explorer shell: Use Regedit to change the value at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon from “explorer.exe” to the program of choice. In my case, I’m using my custom MAME front-end (my old VB.net one, not the new snazzy WPF one), which happens to be in my C:\MAME folder.
A couple things to note: While Windows did load my program upon booting, when I tried to run a game, it would fail because it couldn’t find the roms (even when I specified the full path of the roms). Long story short, when you specify a program in the Shell parameter of the registry, Windows starts that program from the C:\Windows\System32 directory. My workaround was just to move all the MAME-related folders to the Windows\System32 directory. Voilà, everything worked!
I also updated my program to use the .NET 4 Client Profile. I’m not sure why, just a geek thing I guess, since I like to use the latest stuff. The only other thing I can think of is that I turned off some of the unneeded system services (Print Spooler, etc.).