I am not sure if this would solve your problem. Nonetheless, here is an alternative that I have used with success:
Code:
<class name="Field" table="...">
...
<set name="FieldGroups">
<key column="FieldID"/>
<composite-element class="FieldGroup">
<many-to-one name="Group" column="GroupID"/>
</composite-element>
</set>
</class>
Note that there is no need to specify cascade on the <set> since it is owned by Field and a FieldGroup does not really have its own lifecycle. However, you do need to override FieldGroup.Equals() and GetHashCode() for this to function properly.
I believe your mapping in Group would remain the same if you use the above approach.
Edit: Nevermind. Actually, <one-to-many class="FieldGroup"/> would not work because "FieldGroup" is not an
entity. So the above would only work if you can live with a unidirectional relationship from Field to FieldGroup to Group