I've always run into this conundrum: How to give the user a long list of options and allowing them to populate their own if it doesn't exist.
I usually handle this interface by giving an autocomplete list for a textbox, then if they select one, mark a variable that it's existing (kind of like the "Tags" box on here). If it isn't from the list, then I add new. I've also had radio buttons auto-tick or be user-ticked based on "Add", "Edit", and "Select" options.
I've never really loved the above approach, and I was wondering if there was a cleaner better approach to giving the user an option to use an existing or add a new value.