I work at a top (some might say the top) financial services firm as a Software Engineer. I joined relatively recently, so I still haven't formed a full, well-grounded opinion about the environment and my employer, but I will try to go over the main points concerning your question.

A typical day goes like this:

8.55am I arrive at my desk. Login and start checking email.

9.15am Head off to the cafeteria to buy breakfast (yep, no free food!)

9.20am Eat at my desk whilst reading clicking through my inbox. We get a lot of email. Some people on my team are already on conference calls with Bangalore.

9.40am I open up Eclipse and start working on my assigned project. This goes on till about 6pm. The coding is actually the easiest part. It takes a lot of effort to go through the rest of the process - code reviews, testing (all kinds of testing), UAT, sign off. The PM constantly comes to ask for your ETA (oh, you need to fix this threading issue? How long will that take you? Like an hour?)

12.30-1pm Lunch at my desk. Although sometimes when I have less things to do, I get to go out and spend 45 mins enjoying a burrito.

1pm - The New York team comes in. The 'serious' conference calls and meetings begin. Over the rest of the afternoon, about 2.5 hours are spent on conference calls.

6pm - The contractors leave on the dot. I can leave on the dot, too, but then everybody hates me. It's considered acceptable to stay at least till 6.15pm. Sometimes when I have issues (e.g. I have the fortune of doing production support that they) I might not leave till 8pm.

This is my typical non-support day. A support day is similar, except you have to add a couple of hours of nightmare in the middle.

About the work:
Varies team by team. Some teams make iPad apps for bankers. We work on large-scale distributed systems. We have hundreds of processes that exchange and persist information with a few dozen external systems, as well as internal systems to the firm. The biggest challenge is the complexity of the flows and scaling this architecture to peaks.

I'm sad to say, but you will rarely implement fancy algorithms. A good knowledge of messaging protocols, data structures, databases and concurrency is very important though. And the thing that is essential is business knowledge.

So, if you had to make a good old Pros & Cons list, it would go something like this:

Pros:
1) Excellent compensation for the average developer.

2) You get to work with smart and dedicated people.

3) You'll rarely have time to kill.

4) Looks good on your CV, provided you work for a top firm.

5) The work can be interesting, if you're inin distributed systems and architectures.

Cons:

1) Stressful when doing support. A lot of money is on the line.

2) Compensation is very highly correlated with firm performance, which, in turn, is very highly correlated with market performance.

3) You can earn more and work less elsewhere, if you know your stuff. Not really much recognition for "star developers".

4) You'll be using only tried and tested technologies. Good luck getting permission to use any of that RoR you picked up on the weekends.

5) There is A LOT of process.

6) Promotions seem to be based around people's perceptions of you, rather than the quality of your work.

7) Combining (5) and (6) leads to a lot of office politics.

and, finally, (8) If you get unlucky and hired into a shitty team, you're going to have a bad time.

But the best part for me so far is that every once in a while something truly bizarre happens. This makes the rest of my week.

My advice, to survive in that industry as a software engineer, one needs a healthy dose of distrust towards management and a good sense of humor.