This shouldn't be too hard to look at, please file an
enhancement bug report.
I took a glance at the code and noticed some timeouts of: -4 seconds for the legacy programs shutdown -10 seconds for the protectionTimer which seems to manage libSM-aware applications If the code is thread-safe it is perhaps possible to encapsulate the performLegacySessionSave() call in a pthread_create/pthread_join, or without it we could give an option to disable the legacy session save like KDE4 does.
Hey hey, now we're talking. :) Perhaps those timeouts explain why occasionally I see longer exit times.
Darrell