Average median time for NFL is 3hrs 12mins; Baseball is 3hrs 14mins. They even manage to eek out 2hrs 15mins+ for a basketball game.
Does the time spent at these events play a part? I'd imagine all of the delays and stop starts would spoil the viewing enjoyment and detract from the fans interaction.
NFL takes so long because the clock stops after incomplete passes or when the ball goes out of bounds. So the 12 minute quarters could last considerably longer depending on whether the game is pass heavy (vs run heavy where the clock typically runs more) and also the coaches have 3 timeouts they can use per half. Also, because of the TV sponsorship money, there are regular commercial breaks during the game (which is highly irritating).
In Baseball...there are similar commercial breaks and stoppages between innings. The difference between Football and Baseball though is that when the clock is running during an NFL game, it's exciting...whereas most of a baseball game is waiting for the pitcher to stop scratching his balls or shrugging off the catcher's signals or throwing to 1st base to keep the runner one, etc......
Games are actually better to watch in person even with the starting and stopping and I will concede that a Baseball game should only be watched in person if at all. It's a much better experience although still boring as hell to me.
At NFL games there is an "experience" of being at the game (maybe not so different as in soccer) that keeps you pretty tuned in even when there are stoppages.
Plus we are just used to it at this point. It's like when I try to explain soccer to my friends that don't watch it. They can't believe there are no commercials, no timeouts, etc....
It's one of the reasons I really started being drawn to it...I like the non-stop aspect.