I think the answers so far are missing an obvious trick. Combine the include and exclude filters. Each item has a radio button for include and exclude.
Here the user would like to see food that contains chicken meat and nuts but does not contain mushrooms.
-- Filter by ingredients --
Inc. Exc.
☐ ☐ Prawns
☐ ☐ Pork
☑ ☐ Chicken meat
☐ ☒ Mushrooms
☑ ☐ Nuts
This is similar to Steve O'Connor's answer, however, I think it is subtly better because it allows the user to communicate statements such as "I don't care what's in it, I just don't want mushrooms" and "I know that I definitely want chicken".
Supposing you have a large list of possible ingredients you could have a search box that lets you filter the options. Here the user has already decided they want pasta, so the option is 'stickied' to the top of the list, and now they want to check the dairy options.
-- Filter by ingredients --
Inc. Exc. [Dairy]
☑ ☐ Pasta
-----------------
☐ ☐ All Dairy
☐ ☐ Butter
☐ ☐ Milk
☐ ☐ Cheese
☐ ☐ Yoghurt