could be caused by many different issues.
I would start by opening msconfig, do selective startup and unselect he ini files.
then in services, hide all MS services and disable everything else, in startup also disable all.
if computer boots up normal, then your problem is either malware or software.
from there start enabling things slowly, 2-3 startup or service options at a time and keep rebooting, until you again find one that might be causing delay.
if you are running windows 7, you can go into one of the extended event viewer catagories and find one that relates to startup and shutdown (can't check the name right now, since i'm using XP
) In there it will list name of program/driver or service that is causing a startup or shutdown delay.