I have done some prototyping on a "google project" named accounting for ThinLinc
to be able to generated resource usages graphs by service and sessions. The main goal was not to add restricting of resources but the choosen approach using control groups gives that possibility, see bug #44.
It is realized by using control group where services (server, agent) and sessions are assign to, in a Thinlinc specific cgroup structure for being able to collect and restrict resource usages.
The project includes a tool for collecting data into RRD databases and generating graphs...
Code is available here:
Some basic form of this is available on recent systemd systems as you can get some info based on systemd's groups:
> $ systemd-cgtop user.slice
By default it seems only memory is monitored, but it looks like more things can be configured.