I believe you can use nLockTime[0] to construct and broadcast a transaction that cannot be accepted into a block at least until a particular time. Before that time is reached, you should be able to broadcast a conflicting transaction if so desired that is included in a block sooner, thus invalidating the previously broadcast transaction.
[0] https://en.bitcoin.it/wiki/NLockTime