Проверил – вы правы.
(Прошу модераторов удалить мои два поста выше, чтобы не вводили новичков в заблуждение.)
xfce4-session действительно не требуется запускать отдельно.
Достаточно прописать "ck-launch-session startxfce4" в .xinitrc.
Моя ошибка состояла в том, что я запускал это БЕЗ startx, а в .xinitrc всё заработало.
startxfce4 само запускает X, если не обнаруживает его при запуске, но сессия при этом получается “неактивная”, как и при запуске без ck-launch-session.
Жаль, этого нигде не удалось найти.

Получается, есть два необходимых условия:
1) startx,
2) ck-launch-session.
SunStroke
В каких группах состоит пользователь?
Практически во всех: storage, power и т.д.
Не в группах дело.
При запуске через KDM всё работало, а через startx – нет. От HAL ничего не менялось, тем более что теперь всё это работет через udisks/upower.
Команда ck-list-sessions показывла, что сессия “неактивна”. А теперь показывает, что активна. Возможно, xfce4-session может запускаться из какого-то другого места, но так или иначе без неё не работает. Думаю, у вас она тоже присутствует в процессах?
После долгих (и безуспешных) поисков удалось, наконец, угадать, как правильно запустить xfce4.8 (без использования KDM/GDM), чтобы его сессия была “активна” в ck-list-sessions, и следовательно, появилась возможность монтировать диски, выключать и перезагружать систему.
В ~/.xinitrc пришлось прописать вот такую конструкцию:
ck-launch-session dbus-launch --sh-syntax --exit-with-session startxfce4 xfce4-session
То есть обязательно должно быть startxfce4 и после него непременно xfce4-session. По-отдельности работает неправильно – без xfce4-session сессия “неактивна”, без startxfce4 среда загружается не полностью.
Раньше, когда IDE-диски ещё нормально работали со старый драйвером (и именовались /dev/hd*), команда mount /mnt/cdrom всегда срабатывала успешно, независимо от времени распознавания диска приводом и состояния привода перед командой (открыт/только что закрыт/диск распознан/остановлен). Конечно, если диск был и распознавался приводом.

После вынужденного перехода на новый драйвер (винчестеры /dev/sd*, CD/DVD /dev/sr*), успех монтирования начал зависеть от состояния привода в момент подачи команды. Пришлось писать скрипт, повторяющий процедуру “до победного конца”.

И вот теперь, после перехода на udev-1.6.5 и ядро 2.6.37, к проблемам с монтированием добавилась ещё одна, уже совсем дикая – только что смонтированный диск иногда снова сам собой отмонтируется сразу после монтирования!

Сообщения во всех логах идут только о монтировании. Куда копать – непонятно. Единственное, что удалось сделать – скрипт, учитывающий новую “странность” монтирования, с паузой не только между попытками, но и между монтированием и проверкой.
#!/bin/sh
for ((i=2; i<=20; i++)) ; do
 mount /mnt/cdrom &>/dev/null
 sleep 0.5
 A=`grep /mnt/cdrom /etc/mtab`
 if [ -n "$A" ] ; then exit 0; fi
 # echo $i
 sleep 0.5
done
mount /mnt/cdrom
man eject
-T With this option the drive is given a CD-ROM tray close command if it's opened, and a CD-ROM tray eject command if it's closed. Not all devices support this command, because it uses the above CD-ROM tray close command.
То бишь, eject пытается определить состояние устройства, и отдаёт ему противоположную команду. Команды “toggle”, по-видимому, нет. Те же самые команды можно отдать и через другие программы, например "sdparm -C eject /dev/sr0“ и ”sdparm -C load /dev/sr0“. Не знаю, как может быть, что ”eject -T“ работает, а ”eject -t" - нет. Может, меняются права на /dev/sr0 до и после?

С флешкой на старой системе и eject, и sdparm работают правильно. На новой - обе “в два приёма”. "eject -T sdc" c флешкой в обоих случаях работает неправильно - только подключает, а отключить не может - видимо, не умеет правильно определить состояние.

Я уже пробовал и разные опции, и разные правила udev (и вообще без правил), и разные ядра. Поведение одинаково. Насколько я понимаю, дело в версии udev - наверное, что-то там сломали между 1.4.1 и 1.6.5 ?
Ядро с первого раза передаёт команду флешке, и флешка её с первого раза выполняет. Но на старой системе udev реагирует на изменение её состояния сразу, а на на новой - только после второй команды, когда состояние УЖЕ изменилось.
Много гуглил, но не нашел даже упоминания такой проблемы.

Раньше (под slackware) я подключал разделы флешки командами вида "pmount sdc1“, а отключал флешку командами вида ”eject sdc“.
Если передумал вынимать флешку, тогда
eject -t sdc
pmount sdc1


После переезда на Arch обнаружилось странное поведение системы по команде eject для флешки.
Команды ”eject“ и ”eject -t“ теперь надо отдавать дважды! Первый раз на неё реагирует только сама флешка, в второй раз её наконец ”замечает" udev, то есть становятся видны/невидны её разделы в /dev
Аналогичный результат даёт "udevadm monitor –env" - на первый eject гробовое молчание, и только на второй появляется вывод. При этом сама флешка реагирует как раз на первую команду - то есть после первого eject её уже нельзя монтировать, а разделы /dev/sdc1 и /dev/sdc2 ещё видны.

Попробовал запустить Arch со своим старым ядром - тот же эффект, то есть от ядра не зависит.
Пожалуйста, подскажите, люди добрые - где копать?