I can't speak to *nix desktop or *nix web development but I do very well with windows web and desktop development in c#. For many years I did c++ development professionally on windows platforms (even at one point wrote a web server in c++ for a windows app) before moving to the .net platform as it's a better tool for the kind of work I do.
In my (and many other people's) experience it takes 10 years to become really good at almost anything important in life and many more years to be considered a master at it.
Currently when discussions like this come up on sites like CodeProject.com which has a *lot* of professional developers who hang out in the lounge, most people are discouraging of the idea and I tend to agree. Unless your heart is *really* in it and it's something you would enjoy doing every day, day after day I advise against it as a profession.
Nothing can kill the fun of a hobby faster than making a career out of it and right now there are a *lot* of highly experienced developers out of work due to the economy and outsourcing etc. Couple that with the decades long takeover of software development by the gray men in business suits that have made every effort to turn software development into a commodity (quite successfully) and these days the average developer is little more than a tiny, easily replaced cog in a big machine. If you want to make money you're far better off being the gray man in the suit, not the developer. :)
That being said there is still a lot of fun and money to be had working for yourself publishing your own software online and if you stick to tiny little projects you can learn while still treating it as a hobby.
So in short I suspect you will need at least 2-3 years of dedicated learning and programming before you would be what we would consider a competent junior level developer in our shop. And a lot of that would have to be real world programming experience for real end users. Book learning and certifications amount to pretty much nothing these days.