I can't really fathom why you would want to move off of C# and .NET for the sole reason that you don't want to "inconvenience" your customer by requiring they install the .NET framework.
For one, .NET is included with Windows these days. In XP (current service packs), you get .NET 2.0. In Vista, you get .NET 3.0. Assuming you don't actually use any .NET 3.5 capabilities, and don't need any features from C# 3.0, then the "inconvenience the customer" argument is pretty moot. They won't need to download anything or install anything extra...its already there.
In the event that you actually DO need .NET 3.5 and/or C# 3.0, then it is beyond easy to create a pre-packaged installer for your customer(s) that takes care of it all for them. There isn't any real "inconvenience" to the customer, because they have to install your program anyway. A single install can take care of both your program and all of its dependencies in a single, seamless, transparent installation process. If you want an even easier time for your customers, you have the option of click-once deployment with .NET, C#, and Visual Studio. This will create a simple site for your customers that will easily and quickly allow them to download and install your application, as well as update it when future updates are published. This type of deployment also takes care of ensuring any dependencies are downloaded and installed to the clients system, which only needs to be done once (all subsequent updates only require the latest version of changed assemblies to be downloaded and installed.)
As others have mentioned, C# and .NET have a lot to offer. Microsoft has creates an extensive ecosystem for development on the .NET platform, with a tremendous amount of resources, tooling, documentation, and community help. C# is a very clean, modern, forward-looking language that offers a lot of tools to help you and your developers solve problems as quickly, simply, and efficiently as possible. Moving to C++ means not only do you lose these useful advancements, but you inherit the nightmare of manual memory management. Moving to Java means you lose these useful advancements, but generally don't really gain useful either. You could move to other .NET languages, but then you aren't solving the sole problem you mentioned: your clients dependency on the .NET framework.
If you already have a system in place that is developed with C#, I would say don't change a thing. You will be loosing a lot, and won't really gain anything that is going to significantly impact your customers. In the long run, any change is most likely going to have a much more significant impact on your company and your developers. You will have cost involved in rewriting or converting code, cost involved to train your developers on a new language and possibly a new development platform, cost involved to find and fix bugs that have quite probably already been fixed in your current code base, and the list goes on...
You need to learn more about what .NET has to offer before you decide that it is too inconvenient for your customers. And you need to make sure that it really IS an inconvenience for your customers before deciding to make such a drastic and expensive change.