This situation is tricky because there isn't a real true start/end of the filter. The filtering mechanism is a basic interface. Some filters are string-based, while others might run a code-based predicate over values. In Mike's scenario, he's pretty much always got the filter on. It's just that with an empty TextBox value, the filter is allowing everything through. However he could just as easily have a delegate filter with complex code that we wouldn't know if it was filtering anything or not. That's the main we can't really have a set of FilterStarted/FilterEnded events with the way you're thinking of them.
We could have those events based on the IsFilterActive property value changing, but that wouldn't help in this scenario since the filter is always active.