Multiple Input Multiple Output (MIMO (techniques use multiple antennas at both transmitter and receiver for increasing the channel reliability and enhancing the spectral efficiency of wireless communication system.MIMO Spatial Multiplexing (SM) is a technology that can increase the channel capacity without additional spectral resources. The implementation of MIMO detection techniques become a difficult mission as the computational complexity increases with the number of transmitting antenna and constellation size. So designing detection techniques that can recover transmitted signals from Spatial Multiplexing (SM) MIMO with reduced complexity and high performance is challenging. In this survey, the general model of MIMO communication system is presented in addition to multiple MIMO Spatial Multiplexing (SM) detection techniques. These detection techniques are divided into different categories, such as linear detection, Non-linear detection and tree-search detection. Detailed discussions on the advantages and disadvantages of each detection algorithm are introduced. Hardware implementation of Sphere Decoder (SD) algorithm using VHDL/FPGA is also presented.