Roger Federer can still take on Djokovic and Nadal. He has the skills and the stamina to do so. Unfortunately he does not have the killer instinct anymore. After totally dominating the game for so many years, he had acquired the mentality of easing down on his opponent and just coasting along. This is when the younger set of players strike at him. And when the momentum of the game changes, any player would find it difficult to get back into the game, specially against the top-ranked players.
Federer is slowly changing. The coolness and calmness under pressure, the no-emotions-showed demeanor during game time, these can still be seen during Federer's games but he is now showing some emotions. An example would be his recent game against Del Potro. Down 2 sets, he questioned a call by the umpire and the crowd started booing. Federer yelled "Shut up!" at the crowd. He went on to win the match.
Some might say that these showing of emotions are chinks in his armor, but in order to defeat Djokovic and Nadal, Federer needs to be fired-up, pumped-up and aggressive from the start to the end of the game, whether it is a 3 sets, 4 sets or 5 sets game.