Sorry to keep nit-picking!  A couple things - 

1) Since we're calling this wpsc_product_has_variations() function below on L53, too, we should definitely assign it to the $has_variants var.  That way, we're not calling it twice.
2) Watch the whitespace :)  Anywhere we're updating or adding new code, we should be following WP coding conventions.  So here, we'd want disabled( $has_variants [...] ).
3) Speaking of whitespace, when disabled() returns "disabled='disabled'", it does so with the preceding space (See http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/general-template.php#L2278).  So you could have '<input%s class [...]' - that way, we don't have the somewhat annoying phantom spaces in the HTML