I did it mostly as described above. I added a pick list, with the options for Never, Daily, Weekly, Monthly, Quarterly, and Annually. The default value is never, but if the user set the item to 100% complete, a rule fires on the save event to close that task and open a new on rolling the date forward. Ifhey set the value to never the cycle is terminated.
Here is one of the rules as a sample:
If Deliverables.Recurrence='Quarterly' AND Deliverables.Done='Yes' Then
DUPLICATE Deliverables EXCEPT Done,Delivered,CreateDate,CreateBy,Expected,Confidence,Blocking,PreviousActions,NextActions,Summary
ThatDeliverables.DueBy=MONTH_ADD(Deliverables.DueBy,3)
ThatDeliverables.StartOn=MONTH_ADD(Deliverables.StartOn,3)