It really depends on your applications design/layout/interface and the language used.
It's possible in C, C++, C# and many other languages but the real implementation depends on "how" you'd like it to work:
Many games (especially MMORPGs) allow the user to modify and extend their UI using some combination of XML and scripting files (e.g. Lua). This is the easier and more secure approach especially geared towards more inexperienced users (it's most likely easier to edit/update/use, your users won't have to understand a complete language and YOU decide what you expose).
Other programs use library files for plugins. The overall concept is similar to above, but it's harder to use (to create addons/extensions you have to know a supported programming language) and you might expose more than you'd like to (e.g. addons can modify parts of your program you didn't want them to touch).
The generic process is always similar:
- Lookup the available addon files (xml files, lua files, xul files, zip files, dll files, ... your decision)
- Load and evaluate the files (e.g. load the script file, parse the xml file or load the dll)
- Run your code or the code provided by the addon files or call code inside those files, etc.
As you've tagged this under C# I guess you'd prefer the dll/assembly approach. There are other questions with working solutions, e.g. this one.