In this paper, we consider a time-division duplex (TDD) multi-cell massive MIMO system. Channel estimation is hampered by pilot contamination from neighbouring cells. We propose a low-complexity distributed user selection scheme to improve the throughput performance and reduce pilot contamination. The scheduling decision is made among the users according to their virtual SINR, and only the self-selected users can be co- scheduled for data transmission. The advantages of our proposed scheme are twofold. Firstly, users experiencing a weak channel are less likely to be self-selected; this will increase the throughput performance of the system. Secondly, users that contribute to significant pilot contamination are also less likely to be selected; this will improve the accuracy of channel estimation. Analytical expressions for setting the user selection threshold and the average mean squared error (MSE) performance are derived. Finally, numerical results are also presented to provide further insights.