I am looking for some frameworks that can be used to collect usage information for Windows desktop application and analyze it. For example, I would like to be able to answer questions like (a) how many times do people use this application in a day (b) which are their favorite menu items, etc.
I looked briefly at Google Analytics and Omniture SiteCatalyst but they seem to work only on web applications.
While tools like sitecatalyst, GA, YWA etc.. are mostly designed around the web, you can still use them, even for desktop apps. Most of them have APIs where you can send/receive data in a specified format (like XML or whatever), or you can do it along the same principle of how those tools work when javascript is disabled: a static image request with the data attached to the source url (you'd just make a request to the server with the data attached as url parameters. You may also need to fake some browser info so the data doesn't get marked and weeded out as a bot).
You can try http://www.warefeed.com/ too. It's free and open source.
You could try Deskmetrics. It's a simple and cheap Desktop Analytics app.
Disclaimer: I work for the company that produces these products.
If your application is .NET or Java then you can use Runtime Intelligence from PreEmptive Solutions to automatically inject usage tracking into your applications. The way this works is that on the .NET side Dotfuscator is used to process your assemblies after they are compiled and can be configured to inject the usage tracking on the methods that you define (either via custom attributes in your code or through the Dotfuscator GUI). For Java applications the approach is similar although it uses DashO as the injection platform.
Once your application is processed then whenever a user runs it in the wild it will send back usage information over http(s) to a server where the data is collected, summarized and reported on. You also have the ability to provide your user with an opt in so that they can agree to having their usage data aggregated.
All of the professional level products have free evaluations so you can try them out with no risk.
Also, if your budget is $0 and your application is .NET 2.0 or higher then you can use the free version of Dotfuscator in Visual Studio 2010. This will provide you with a more limited set of analytics features but you still can monitor application start/stop as well as up to 10 named features (methods). By default the data is sent to a free community portal with no service levels and no guarantee of privacy. PreEmptive also provides an open source basic WCF based endpoint and database starter on Codeplex here so that you can host the storage and reporting of your applications usage data yourself. Any version of Dotfuscator, including the free one in Visual Studio 2010 will allow you to specify a custom URL for the usage data.