I honestly don't see the problem with making gender a text field. Sure you can put something like broccoli in there, but it can also reveal a lot about a person beyond their gender. Boy, Man, Male, Guy, Bro, Girl, Lady, Female, Gal, Fille, Homme, Garcon, Dude, Dudette, Manchild, etc.