You are correct that widget's do not allow macros from the front end, but you can still set them in the properties on the backend. This probably wouldn't help to much since it seems you want the macro to change.
I am not 100% sure it would work, but you could try creating a new field on the widget that takes a date that the users can set, then in the backend for the visibility set a default macro that will check this new field and determine if the visibility should be on or off.