I want to create a plugin extensibility mechanism for a very generic application which has many facets and lots of different functionality.

A little bit more detail about what I develop:

* I have a GUI application and want to provide a lot of extension points. I want to add menus, actions, toolbar buttons etc.
* I have some non GUI services, which monitor changes to edited data, etc. I want to register such services.

I am considering Equinox (as an example, I can't use it because of application constraints) and its very nice extensibility mechanism which involve extensions and extension points. What are the problems with this approach? What alternative solutions for this problem are available?