I've made a few toy apps with it. It works very well in my experience. Where Glib or Gtk give something like a GList, Gtkmm transforms it into a standard library object such as a std::vector, and also accepts standard objects where expected. So its much more of a standard C++ experience than you would get with Qt. If some C library, like say libchamplain, isn't wrapped, you can just access it with C functions; you always have access to the underlying C GObject. You can also directly subclass Glib::Object and give it properties and such.
I can't really say how it compares to Vala, other than I suspect it is more straightforward to use a non-GObject C or C++ library in Gtkmm than it is with Vala.