I just upgraded my old system and ran into an issue where KDM would launch an xterm rather than executing startkde when logging into a KDE session (and would perform similarly when any other session was selected).
I spent hours troubleshooting this problem and checking that all of the config files were correct. They were.
Finally, I realized that KDM may be reading kdmrc as root, but may be trying to execute the Xsession script as the user that is logging in.
The /usr/share/config directory was currently mode 700. I chmodded it to 705 and the problem was resolved.
Moral: if everything else seems right, check your permissions.