>I can't seem to use variable inside the match attribute value in XSL:template node
That's a restriction in XSLT 1.0 that is lifted in XSLT 2.0.
If you're stuck with 1.0 you can do
<xsl:template match="*[@user]">
<xsl:if test="@user != $user">
...
To answer your general concerns, what you are doing is well within the capabilities of XSLT (even version 1.0); your problems are merely the beginner's difficulties that occur when learning any new language.
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer's Reference