OK... this works.
First, in CategoryMenu.ascx fix the stylesheet link as follows:
<link href="/DesktopModules/Smith.CategoryMenu/CategoryMenu.css" rel="stylesheet" type="text/css" />
... using an absolute path to the CSS file, instead of a relative one.
Next, the asp:TreeView I made look like this:
<asp:TreeView
ID="tvCatMenu"
ExpandDepth="0"
PopulateNodesFromClient="true"
ShowLines="false"
ShowExpandCollapse="true"
NodeStyle-CssClass="NodeStyle"
ExpandImageUrl="~/DesktopModules/Smith.CategoryMenu/tv_expander.gif"
CollapseImageUrl="~/DesktopModules/Smith.CategoryMenu/tv_collapser.gif"
OnTreeNodePopulate="tvCatMenu_TreeNodePopulate"
OnSelectedNodeChanged="tvCatMenu_SelectedNodeChanged"
runat="server"
CssClass="SmithProdtext" />
... notice the line that says NodeStyle-CssClass="NodeStyle"
Then the CSS stylings work properly.