It's because you're asking for "all Item nodes that have a attrib of Dept/with value of Site Support, and also, the preceding nodes must not have duplicate category1 values."
"/ROOT/Item[@Dept='Site Support' and not(@Category1=preceding::Item/@Category1)]/@Category1"
In XSLT 1.0, this means that *any* preceding node that has a matching @Category1 value will be excluded (maybe you meant to ask that only the *immediately* preceding be excluded?).
The reason that
/ROOT/Item[@Dept='Blackberry' and not(@Category1=preceding::Item/@Category1)]/@Category1"
returns "Active Directory" and "Software" is that these are the only nodes who have no preceding sibling with that attribute value (they are unique in the XML document).
I would suggest you read the XSLT FAQ here: http://www.dpawson.co.uk/xsl/sect2/sect21.html
And look into XSLT 2.0 so that you can use expressions like
/ROOT/Item[@Dept='Blackberry' and not(@Category1=preceding::Item<strong>[1]</strong>/@Category1)]/@Category1"
assuming that this is what you're trying to do.
Hope this helps,
John