Visible Light Communication (VLC) is an emerging field in Optical Wireless Communication (OWC) which utilizes the superior modulation bandwidth of Light Emitting Diodes (LEDs) to transmit data. In modern day communication systems, the most popular frequency band is Radio Frequency (RF) mainly due to little interference and good coverage. However, the rapidly dwindling RF spectrum along with increasing wireless network traffic has substantiated the need for greater bandwidth and spectral relief. By combining illumination and communication, VLC provides ubiquitous communication while addressing the shortfalls and limitations of RF communication. This paper provides a comprehensive survey on VLC with an emphasis on challenges faced in indoor applications over the period 1979-2014. VLC is compared with infrared (IR) and RF systems and the necessity for using this beneficial technology in communication systems is justified. The advantages of LEDs compared to traditional lighting technologies are discussed and comparison is done between different types of LEDs currently available. Modulation schemes and dimming techniques for indoor VLC are discussed in detail. Methods needed to improve VLC system performance such as filtering, equalization, compensation, and beamforming are also presented. The recent progress made by various research groups in this field is discussed along with the possible applications of this technology. Finally, the limitations of VLC as well as the probable future directions are presented.