This is a wheel that\'s been re-invented again and again over the years.
The Problem: The user needs to input a Date/Time
Basic considerations
My preference is for a text input with an elipsis button next to it:
Enter a date [ ] [...]
The elipsis would pop up a calendar to populate the text input, but the user can type in a date if they want. Validation should be done when the "OK" button for the form is pressed - trying to do date validation on a character by character basis is doomed, in my experience.
The validation should be sophisticated and allow expressions like
"today"
"Tomorrow"
"23 Jan"
etc.
Edit: In reply to some comments, one could do validation when the text edit loses focus (though I hate that kind of thing) in which case the edit content could change from "23 Jan" to "23-01-2009" to indicate that the exprssion was understood.