C# consecutive and redundant null checks
Two things to think about:

Could you code this so it's impossible to create an invalid Theme instance thus not having to worry about it in this method?
How does a consumer know what is invalid about their instance?

For 1, you could simply have a constructor that takes all of the arguments and throws if any are invalid. A pattern that can also work well is having defaults - that way, a theme can just override part of the default theme rather than having to specify everything.
For 2, add some context to your exceptions:
throw new IncompleteThemeException(&quot;Default Password Indicator Brush was not specified&quot;);

However, I would probably lean towards having a mutable builder class with defaults and have a create method there. Consuming it could look like:
var builder = new ThemeBuilder(Theme.Default /* or existing theme etc. */)
     .WithErrorBrush(myErrorBrush)
     .WithAccentBrush(myAccentBrush);

// Now build it.
var theme = builder.Build();

That seems like it would make it easier for consumers to use a Theme as all instances would always be valid and you get the ease of use via the builder class. A nice bonus is that you can add new properties to the theme without breaking consumers. They get a sensible default that they can choose to override if needed. You don't just start throwing IncompleteThemeException.