Add more fields to content type dynamically
This is in core for the field types supported by the fields module.  When you add the field to the node type, just pick Unlimited  as the maximum number of values the user can enter for this field.  Every time the user adds a field, a new one ready to be filled in will appear.