Yes, custom fields can be added programmatically. Nothing exists at this point to add them with a simple point and click interface.
You can see examples of extensions that add custom fields:
Each of the above, the source code is documented pretty well.
It is somewhat complex if you do not know PHP. Hope that helps!