In principle, by HTML5 drafts, you can use the
step attribute to set the step size. For
input type=time, its value is interpreted in seconds, so for 15 minutes, you would use
<input type=time step=900>
This is currently supported by Opera and Safari, but not Chrome (odd, because some earlier version had support, at least according to my book (literally)).
Similarly, you can set an upper limit for date using the
<input type=date max="2012-08-29">
Works on Chrome, Opera, Safari.