You really have to go with what you enjoy. I personally have a CS degree and spend most of my time at work coding, writing algorithms, doing problem-solving in my head or on paper, and testing. There are lots of ways you can specialize in CS, either in school or the workplace. My specialty these days is network security, specifically network programming and applications. But there's also wireless, the more IT side of physical networking/management, databases, web programming and applications (which seems to be a really hot area lately), system-level programming (OS, file systems, drivers, etc.), generic application-level programming, embedded systems development, and all kinds of smaller fields.
IN THEORY a good Comp. Sci. degree should give you the fundamentals to understand and operate in any aspect of computing, down to the hardware level (though you may not understand the analog nature, you should be able to handle bits on a wire, what an ALU does, logic gates, etc.). Some schools now have CS degrees where they teach you how to be a Java or .NET programmer and that's it, and I'd avoid that like the plague. Yeah you'll get a job and make ok money, but you'll be so specialized you won't be able to do anything else.
As far as money, you'll probably never become rich as a developer unless you invent something or start your own company. Starting average pay right now is probably 50-60k, mid-career pay around 100k, and end of career at maybe 150 or better, depending entirely on your qualifications, part of the country, company, job role. You can always go into technical management eventually where you're likely to make more but be farther from the hands-on technical stuff. A bigger concern should probably be getting a foothold in the industry and then having some job stability over the course of a career. It can be tough to get hired in the first place and outsourcing/offshoring is always a threat, but if you manage it, the money's not bad.
I work with some CEs and even EEs who are doing very Comp. Sci. like stuff, mainly programming and VHDL. There's a lot of overlap, it's just the "core" focus of the degrees is different.