withTraceLevel sets only the trace level for the arrow you give as its second parameter.
In your code below, withTraceLevel enables trace and sets the level during traceTree execution only, not the rest
withTraceLevel 5 traceTree >>> traceMsg 1 "bla bla"
try this instead
withTraceLevel 5 (traceTree >>> traceMsg 1 "bla bla")
See what happens in the interpreter:
$ ghci
Prelude> :m +Text.XML.HXT.Core Text.XML.HXT.Arrow.XmlState.TraceHandling
Prelude ...> runX $ withTraceLevel 2 $ traceMsg 1 "hi!"
Loading package array-0.4.0.1 ... linking ... done.
Loading ...
-- (1) hi!
[NTree (XTag "/" []) []]