Hi Dave (sorry for the length of the reply, but I hope it adds up to a sensible answer in terms of understanding the problem, and explaining how we've addressed it),
There are some hidden 'gotchas' when considering this kind of WF which is developed in SharePoint Designer and which might affect how you think about things; my experience around reminders comes from working with Documents people need to be reminded about such as Policies/procedures etc. that they are the Manager or Owner for, where they need to reconsider or confirm the validity of a document and record that it is good for the next period of time (perhaps another 1 or 2 years).
Basically the real problem with SPD WF's comes about because once you initiate a SPD workflow, it takes the parameters out of the document, and stores those as part of the elements of the WF variables. Thus if you make a change to a field, and the WF is continuing, that altered element does not get modified in the WF parameters - you need to 'kill' the workflow and start it off again in order for that to work correctly.
We've developed a fully inclusive approach for this and it is OK to do, but unfortunately it needs to have about 5 WF's in order to work. Basically you include a 'Pause until...' approach in the 'Reminding' WF and you need a parallel task where if a 'flag' is set it kills the WF. Thus, if someone changes the originating document, the 'Flag Set' WF runs, pauses for 1 minute, then changes that 'Flag' field, and then completes. This then allows for the 'Reminding' WF to restart with a new set of parameters.
However you have to consider what kind of field difference might initiate a change as well, because not every field perhaps needs the 'Reminding' WF to restart! For example if the date you want to remind about changes, if the person you want to email alters, if the importance differs etc. that all requires a restart. But if simple text field or other elements alter you might not want to restart things.
The end result of all of this is nastiness in our view - something that ought to be relatively simple to effect becomes mighty complicated.
To that end (and because Visual Studio WF's were not an option), we ended up looking for the equivalent of a timer task that could be triggered as we needed it. Basically we wanted a simple WF to email someone and for that to initiated daily against all documents in the library/list with a conditionality of looking for documents where the date (1 month before for example) was set to the current day.
We discovered there are numerous solutions available from people like Pentalogic, Virto software, Bamboo Solutions, SharePoint Boost, SharePoint Solutions, KWizCom etc, but the prices start around US$700 for an Alert Manager / Reminder / Customised Alert system so for us that was out.
What we did find was a really useful free application produced by HarePoint - called the 'Workflow Scheduler'. Basically this allows for a simple WF to be created, and for that to be triggered every day against every document in the library or list. There are levels of conditionality you can add as well which means it actually doesn't run against everything, just the documents where the reminder date is the same as today's date.
For us this additional element is a real winner, and a number of customers we work with have used this approach now with great results. However each instance is different and you'll need to consider if it is right for yourselves.
I am generally a big fan of SharePoint Designer workflows and have used them very effectively in all manner of ways, but sometimes they need a helping hand.
Regards Alan C.