/etc/init.d/kdm is responsible for substituting @@@ToBeReplacedByDesktopBase@@@ when kdm is started, at line 86:
This failed because my kdmrc was in /var/run/kdm/kdmrc/kdmrc rather than in /var/run/kdm/kdmrc. I was unable to figure out why (even after reading upgrade scripts) but /var/run/kdm/ was a directory which contained a kdmrc/ subdirectory.sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG}
Deleting /var/run/kdm/kdmrc/ works around.