While searching the web, I came across a list of rules from Eric Evans\' book that should be enforced for aggregates:
My favourite way of enforcing DDD patterns and practices is constantly educating people about their value. There are however moments when I with I had a more rigorous tool.
I haven't done this myself yet, but is seems to me that FluentNHibernate could be a good tool for enforcing aggregate properties.
Your example could be implemented by marking all aggregate roots with 'IAggregateRoot' marker interface and non-root entities with 'IEntity' marker interface. Then, your custom FNH convention would check for entities marked as IEntity referencing entities IEntity and when found, would signal an error (throw an exception for example).
Does it make any sense?