Firstly, don't use disable-output-escaping to generate a NBSP character. This will only work in environments where (a) the output of your stylesheet is serialized, and (b) the optional d-o-e capability is supported. For example, it won't work in Firefox. The hex code for NBSP is xa0 and the easiest way to output the character is to write it as #xa0; in the stylesheet.
Concerning your question, you're using XSLT 2.0 syntax so I assume you want an XSLT 2.0 solution. You're almost there with
<option><xsl:value-of select="@Available"/></option>
<option><xsl:value-of select="for $qty in (1 to $qty) return $qty - 1"/></option>
except that this generates two option elements, one of which contains multiple values, when you actually want one option element for each value (I think). Also you surely want to generate <option value="3">3</option> rather than <option>3</option>.
So I think you want
<select>
<xsl:for-each select="1 to xs:integer(@Available)[. != xs:integer(@Available) - 1]">
<option value="{.}"><xsl:value-of select="."/></option>
</xsl:for-ach>
</select>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference