Sure. Suppose we have a user, "nick" and we want him to only be able to consume his own resources.
I give him the permissions ^\Qnick\E\$.* ^\Qnick\E\$.* ^\Qnick\E\$.* (\Q \E just in case the username has some character that means something to a regex).
Then he has to name his queues "nick$<something>" and he also has to bind to exchanges that also start with "nick$".
This necessarily means that you cannot create queues with auto-generated names, because you wouldn't have permission on the queue (or permission to create it from the client side) because they start with "amq." rather than "nick$". However, it's very easy to write a little code to auto-generate a queue name for a given user if they all follow the same format.
Then you give your "root" user the permission .* .* .*, and it can do anything.
It's a little bit hacky, but it works very well.
Nick