@Vipul - your solution should work in modern browsers. Your question indicates that with javascript enabled you see the escaped html in the markup - is that also rendering like that in your browser? (it shouldn't if javascript is enabled.) If that isn't the case, the invalid markup you see when JS is enabled shouldn't be a problem because who cares what it looks like if the garbage isn't visible.
@Sarfraz - the tag is used for html (not javascript), to display markup when javascript is not available - disabled or unsupported. Adding link tags there is a common approach to load a specific stylesheet when javascript is not available. Despite it being a non-standard approach as @Geert points out - it does work.
In this case it seems @Vipul was seeing some weird markup in firebug - FF6 supports it though.
In either case you should still take heed of the second point of advice in @Scott's answer - don't use the first as that adds extra (albiet a probably small) load to your server for 99% of internet users who have js enabled. Stick to defaulting a "no-js" class to your html tag and remove it with javascript in the head. Be sure to do that in your head otherwise you'll fouc the browser.
The exception to @Scott's rule is if you need to load a massive amount of CSS for user's without JS enabled. In that situation I would recommend only linking to the css if JS is disabled via the noscript tag. Why punish 99% of users who embrace a dynamic web environment because you need to kludge in style fixes for the remainder of the web?