I don't know where the problem is but after I rewrite my xmond.hs by using
XMonad.Config.Gnome, xmonad and gnome become friends again! :-)
It's probably insisting on the window manager registering with dbus;
XMonad.Config.Gnome makes sure that happens.