One way is to build your data context object dynamically and bind the Visibility properties to properties on this dynamically built object. You would then use it in the following way:
var provider = new MyDynamicProvider();
// Add the names of the properties with the particular attribute with
// initial values (found using reflection elsewhere).
provider.MyValues.Add("PropertyWithAttribute", "Test");
provider.MyValues.Add("PropertyWithAttributeVisibility", Visibility.Visible);
// Add properties that do not have the attribute
provider.MyValues.Add("PropertyWithoutAttributeVisibility", Visibility.Collapsed);
view.DataContext = provider.CreateDynamicWrapper();
In the view you can now do the following:
<TextBlock
Visibility="{Binding PropertyWithAttributeVisibility}"
Text="{Binding PropertyWithAttribute}"
/>