What you really want to do is to optimize the ReadyBoot function of Windows 7, which uses the ReadyBoost feature to speed up the loading of all the code needed to load the OS. To do this, you need to install Microsoft's "Windows Performance Toolkit" for your particular flavour of Windows 7 (X86 or X64), part of the Windows 7 SDK base development tools installation.
For further details see the link cited above as well as a Google search using keywords xbootmgr readyboot or a Google search using keywords Windows On/Off Transitions Solutions Guide
It helps to use the Autologin tool of Sysinternals to enable automatic login to your usual working account; the tool should be started from an elevated command line session in that user account, in a folder you've created for the purpose (it will store trace files there, which you can analyse later with other Performance Toolkit tools, if you are a Geek-with-no-Life (TM)), using the command line xbootmgr -trace boot -prepSystem -verboseReadyBoot.
It will install an autostart entry and reboot the computer six times while optimizing boot time, and after a certain amount of activity at each boot, it will require UAC elevation, so you have to remain near the machine to answer the UAC dialogs. It then removes the autostart entry and reboots one final time.
On my Core 2 Duo T9400 notebook, the process took the better part of an hour, and the result was a 25% reduction in boot time--but others have noted up to a halving, it depends on how bad things are to start with on your machine.
The toolkit is also useful to see what software and drivers are slowing down hibernation, suspend, as well as the wakeup from those machine states--see the toolkit's Help file for for details.