Selecting an item from a large number of items is a very well-solved problem. However, there doesn't appear to be a good solution for selecting large numbers of items, ie. when the user needs to select 100+ items from a list of thousands. Note that there's no real way to reduce the number of selectable items - all those items need to be available to select at once.
My best approach solution so far is a list of checkboxes with a search field and "select all" and "un-select all" buttons. It seems like it'd work, but it feels clumsy and I'd love to know if anyone's got a better solution.
download bmml source – Wireframes created with Balsamiq Mockups