Microsoft has a pretty cool rating system that I have in my queue to implement someday. It is called TrueSkill. It lets you adjust ratings for players in head to head and when on teams. You can read about it here: http://research.microsoft.com/en-us/projects/trueskill/details.aspx
The advantage is that it is supposed to gravitate towards your True Skill quickly (usually in 20 games or less). The disadvantage is that it is quite complicated.
The ELO System (and others like it) have a disadvantage in that they suffer from a problem called point inflation. For example, if 1500 is intended to mean the average player, over time that will no longer be the case. With enough games, the true average (for the population as a whole) will eventually increase. Thus, the average player really may be 1600 but the intent was for 1500 to be average. Thus, many average players think they are better than they are:).
However, the advantage of the ELO system is that it is very easy to calculate.