1) Working for a company that creates commercial (shipping) software.
You might get to work with bright people and experience a well-run software shop! This can be really incredible when it comes together. Also, you might get appropriate training and there's something to be said about working with (and for) people who understand what you do.
On the other hand, you might get pidgeonholed and become a McDev. One of the things I look out for when I interview devs for my consulting firm is people who have been stuck maintaining a small part of a single project for many years. That's not good - your skills can really get dull when you're just churning out reports or cleaning up EDI documents year in and year out.
Also, crazy hours, deadlines, and brutal death march situations are a fact of life in many large companies that ship big projects. That's something to feel out.
2) Working for a company on software used internally.
This can be good if the shop is not too bloated. One thing I've noticed in my consulting experience is that the busines units in large companies tend to loathe their IT departments because they can't get anything done and they can't hold on to good people. When this happens, I theorize that it's because they are seen as cost centers and are therefore underfunded. Also, when it goes bad, there are usually empire builders involved.
Also, you might end up taking orders from people who don't really understand development, which is very frustrating. Between the politics and the budget pressure, it can be a real pressure cooker where you never get to make anything really cool and your projects are contantly being cancelled. Or you just spend your days answering trouble tickets and putting out fires. And that sounds miserable.
One of my buddies works on a three-man team for an up and coming fortune 500. It was a great experience for a long time, but they've grown tremendously and now he's stuck dealing with things like ERP nightmares caused by incompetent CIOs. So that's something to keep an eye out for.
3) Working on software for the government.
I'm sure someone out there has had good experiences coding for the man, but I don't know them. One of the guys I work with came from a local sherrif's office, and it sounds like it was even worse than your typical horrible IT department. Just brutal. Among other things, they were preventing him from moving to VS 2005 and VS 2008 was already out.
I'm sure there are government groups out there that have sensible budgets, interesting projects, and good management. But that isn't typical.
I have done consulting for the government... All I can say is they give you room to do things right, but projects move incredibly slow. Twice now it has taken over a year for a project to get approved and then it was cancelled a month into development. Seriously.
4) Consulting (secret bonus question)
Don't forget about this possibility! I've been consulting for a small firm for 8+ years and I love it. Project work means it's always something new, plus you can stay on the cutting edge and get total life cycle/design experience, which to me is much better than working on a tiny tentacle of someone's enterprise accounting package. You get to do a little of everything.
I feel that doing this type of work has put me way ahead of a lot of the people I've interviewed, some of whom have been in the game longer but have been able to rest on their laurels, whereas I must constantly pull my weight. If I ever want to do something else in the software world, I have the sense that my advantage will be substantial, and that's not because I'm special - it's because I was fortunate enough to end up in a place where I get a lot of variety in my work.
To be fair (and yes, I am biased because I love my job), I will say that there can be a bit of pressure to rush through things and sometimes the people who run these types of shops are often fine with cutting corners. If you're the type of person who wants things to be more of an institution with enterprise-class packages for things that aren't really necessary and so on, be aware that this is the way of the huge bloated institution, not the way of the small sleek consulting team, whos life depends on excellent service and the ability to outmaneuver the lumbering and often inept competition.
It's really about the people and the environment. I'm sure environments like the one I work in could be created in each of your scenarios, however I feel that they are probably the least fragile in small to medium-sized consulting firms or in rapidly growing businesses. In government and large corporations they are probably the most fragile.
I hope that helps!