One solution is to bind the IsIndeterminate property to the same underlying value as the Visibility property, for example something like this:
<ProgressBar IsIndeterminate="{Binding IsBusy}"
Visibility="{Binding IsBusy,
Converter={StaticResource VisibilityConverter}}"/>
The IsBusy property of the bound DataSource can then represent whatever condition is suited in this scenario.
Thanks to Adam for this tip!