You need to change the ControlTemplate for the TreeViewItem to actually be the entire width of the control.
There is a discussion about this issue, along with a solution, here:
http://leecampbell.blogspot.com/2009/01/horizontal-stretch-on-treeviewitems.html
There's another lengthy answer here, without the discussion:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b04f73e2-0b10-4d97-a6da-64df2e30c21d/
So I meant those examples to be guides. If you take exactly the same code as is in the second link above (from MSDN forums) and just add this:
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="Bd"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</Trigger>
to the ControlTemplate you'll see that you get the highlight color on mouseover. Obviously you'll need to tweak the color and whatnot, but that's what you'll need to do - modify the ControlTemplate of the TreeViewItem so that it takes up the entire width and add a Trigger for IsMouseOver.