There are many solutions to the general problem you present. I will not get into disadvantages or advantages, just enumerate a few ways for you to explore further, and in no way I expect to be exhaustive
Input options (to define which options to enable/disable):
a) Config file
a.1 - add toggle variables (many feature variables, each true/false)
a.2 - add feature string list (e.g. "features"="feature1,feature2,feature4" implies feature 3 is disabled)
b) Database table
b.1 - single table with a row per feature
b.2 - single row with a list of features
b.3 - multiple tables, for example relating users vs. features
c) Registry (generally similar to config solutions, but can be used as a database through subkeys)
d) Proprietary file (similar to config but you define a specific file structure)
e) Web service (program connects to a service to get configuration, then similar to config file). Particularly common for mobile apps
e.1 - receives JSON
e.2 - receives XML
e.3 - proprietary format
Processing options (to define how to execute the enabled/disabled ):
a) Set boolean variables, use if on specific code paths
b) Switch statement (your solution)
c) Strategy pattern
d) Apply IoC pattern where you load a specific processor depending on the configuration