When is it slow? Before you see the login screen or between entering your password and getting to a usable desktop?
If before, bootchart may help.
If after, you should also have a look in the file .xsession-errors for any errors.
And try disabling programs via System->Preferences->Startup Applications and log out and in each time, until you see which one makes a big difference.
Another option is the audit subsystem. Before logging in, switch to a virtual console (e.g. press Ctrl+Alt+F1), then log in, and run auditctl to make it record every process starting and finishing. Then press Ctrl+Alt+F7 to get back to the graphical login screen, log in, then run aureport to print the information out.
You may also be able to put strace -e trace=process > /tmp/startup.log 2>&1 into your startup configuration files somewhere, e.g. edit /etc/gdm/Xsession and change eval exec $command to eval exec strace -e trace=process $command >/tmp/startup.log 2>&1. Whether Xsession is the right place will depend on when the slowness is happening.