Nothing breaks a great story and atmosphere in a game more than an obtuse, "thrown in because it needs to be in there" boss fight at the end of the game, except for an even worse "we need to stretch this game out" end of a level/chapter boss fight. You can dress them up differently, make them as epic and flashy as can be, but the bottom line is that the boss fight mechanic is old and tired.
Before I go any further, I'd like to make a clear definition of what makes a boss fight. In short, a "boss fight" is a battle with one or more non-playable characters that cannot be defeated through normal attacks, weapons, or special moves.
I'll take a recent Rev Rant for a great example, Batman Arkham Asylum. And I'm not going to just use the last boss fight (I won't give away too much), I'm going to use pretty much every boss fight in the game. And just for reference, I don't consider the Scarecrow "levels" as boss fights. Almost each and every fight consisted of "here's an arch nemesis of Batman that can't be defeated in a toe to toe fight, find another way to beat them." Yes, they did provide an extra challenge, but they recycled other game mechanics that are now archaic, especially the Bane and Killer Croc fights. Then there was the final boss fight, which made almost no sense both within the game's story, and the continuity of the Batman universe.
And that's the problem with most boss fights. They can kill a story, break any form of immersion, and only offer a different, albeit highly and often badly repeated, way to beat an opponent. The same challenge can be presented by an enemy with normal health and attacks, or by giving the player a challenge with a much higher difficulty level.
I'll use the Bane fight for an example. Instead of going one on one with the "Bat Breaker", why not switch the scenario to Batman keeping a raging Bane distracted while doctors and guards sneak out of the room? And again, instead of fighting him head on, lure Bane into a room with an electrified floor to knock him out. You can get the same level of challenge without having to shoehorn the scenario into a straight ahead fight.
You could also use the Metal Gear Solid series. One of my favorite bosses in the game, Sniper Wolf, could have been done completely differently, while still keeping the character and the challenge. In the first fight, after Meryl gets shot, the little wings on either end of the corridor could have been eliminated, leaving just you on one side of the corridor, Wolf on the other, and no place to hide in between. Just make Wolf a bit faster and more accurate, and you've got a great challenge that actually feels a bit more realistic. The same could've gone for the second fight. Revolver Ocelot, Psycho Mantis, and Vulcan Raven were all boss fights that could've been done a bit differently, with characters with normal amounts of health and ammo, and would not have had much of an affect on the overall story of the game. The same could be said time and time again for countless games.
Even the main boss fights have no real service to offer anymore. Throw out that nearly unkillable boss, and throw in an epic chase, a gauntlet of enemies, a massive puzzle, or just about anything else that could provide the same level of challenge as an enemy with a health bar on steroids, and you've just put a breath of fresh air into your game. Call of Duty 4 is an amazing example of a game, especially one limited by it's genre, that threw all kinds of challenges at you without resorting to boss fights. That alone added a bigger level of immersion.
It's time to throw away the crutch that boss fights represent, and start looking at newer and more inventive ways to both challenge the player and progress the game's story. There are plenty of ways to create meaningful and memorable challenges without resorting to throwing a bigger, harder to kill enemy in the player's way. Show me a game with no boss fights, and I'll show you a game that takes one change in game design and makes a huge difference. read