The emergence of Vehicular Ad Hoc Networks (VANETs) is expected to be an important step toward achieving safety and efficiency in intelligent transportation systems (ITS). One important requirement of safety applications is that vehicles are able to communicate with neighboring vehicles, with very low latency and packet loss. The high mobility, unreliable channel quality and high message rates make this a challenging problem for VANETs. There have been significant research activities in recent years in the development of congestion control algorithms that ensure reliable delivery of safety messages in vehicle-to-vehicle (V2V) communication. In this paper, we present a comprehensive survey of congestion control approaches for VANET. We identify the relevant parameters and performance metrics that can be used to evaluate these approaches and analyze each approach based a number of factors such as the type of traffic, whether it is proactive or reactive, and the mechanism for controlling congestion. We conclude this paper with some additional considerations for designing V2V communication protocols and interesting and open research problems and directions for future work.