Making an xdm shutdown/reboot/sleep etc buttons is quite simple really. You can use xmessage or something similar.
A very simple example:
#!/bin/bash
xmessage "" -buttons " Shutdown , Reboot " -geometry 228x36-10-10 -font '-*-bitstream vera sans-*-r-*-*-18-*-*-*-*-*-*-*' -bg black -fg white
SELECTION=$?
case $SELECTION in 101)
poweroff ;;
102)
reboot ;;
esac
You might want to change xmessage text sizes (with -font option, use xfontsel to select font), location (use -geometry option -0-0 would place the xmessage in the lower right corner), foreground and background colors (-fg and -bg, see /usr/X11R6/lib/X11/rgb.txt for valid color names). Furthermore, you might want to timber with xmessage's resources to get rid of button/textarea borders etc if they bother you.
I'm not quite sure about the name of the file where you should place this as I don't currently use XDM, but I think its /etc/X11/xdm/Xsetup (or Xsetup_0 or whatever).
Note that you will also have to get rid of xmessage on login (the simpliest, though maybe not the best way to do this is to do killall xmessage in /etc/X11/xdm/Xsession). A better way would be to write the pid of xmessage to temporary file and kill that pid from Xsession.
In my experience XDM is much faster than KDM and GDM and it doesn't require you to install anything as it comes with X. It's also very configurable (though not the easiest around to configure), you can create quite nice looking login screens with it using background graphics (with external tools like xsetbg). You can even have an xscreensaver running on root window when XDM is on display