Well, I don't know of any straightforward approaches, but what you could do is to create an Attached Property and apply it to each TreeViewItem element. See more about implementing Attached Properties in the Overview and this example on StackOverflow.
This Attached Property would apply a different style to the TreeViewItem depending on the level.
It would be a bit tricky to get the level unless you're programmatically producing the TreeViewItem
hierarchy.
If not, you could either calculate it every time a registration of the Attached Property call is made by traversing up the Visual Tree.
Or you could try - should work in theory - by doing RelativeSource binding to an Attached Property of the parent and increment it by 1 using an IValueConverter:
<TreeViewItem TreeViewLevelStyle.Level="{Binding RelativeSource=
{RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}},
Converter=IncrementByOneValueConverter}">
(Disclaimer - this is an idea, and not something I tried previously)