SQL Xml returning empty root tag on empty record set
A possible solution to your question is neither elegant or clean (IMHO), but it does satisfy what you are looking for:

SELECT ISNULL(s.lmx, '&lt;Users&gt;&lt;/Users&gt;')
FROM 
    (
        select 1 as tag, null as parent,
        FirstName as [User!1!FirstName!Element],
        LastName as [User!1!LastName!Element]
        FROM Users
        FOR XML EXPLICIT
    ) AS s(lmx)


The output for this on my system is:

&lt;Users&gt;&lt;/Users&gt;


Please let me know what you think.

Edit:

I took your select statement and made it a subquery.  The subquery is run first and generates the output XML string or NULL.  If the result is NULL, the outer SELECT replaces the NULL-value with an empty Users node (&lt;Users&gt;&lt;/Users&gt;) else the generated XML string is the result.