i think you are accidentally using the hibernate collection set instead of the java.util.Set. check your imports.
Code:
User user = new User();
user.setLoginName("name");
user.setFirstName("First");
user.setLastName("Last");
Set emails = new Set();
Email email = new Email();
email.setEmail("first@host.com");
------exception--> emails.add(email);
//user.setEmails(emails);
a hibernate set collection during initlaization checks to see if it is associated with the session (this is what makes it "live").