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.