Search engine gives results that is much relevant to user search queries, so, to reach first page of Google Results, you must optimize your website for a certain keyword. Target the most popular keywords used to reach related content, watch your competitors technics and make your site the most revelant with a:
- strucured pages
- keyword in title, body and tag
- reasonable keywor density
Yes there many reasons that can stop your website to rank high in Google but the major issue with ranking is the quality of your back links and how you gained them, how many they are also another factor.
First and most important thing for a website not ranking on top is the content of the website should not be unique or the content should be copy pasted, not upgraded frequently and the second thing is the poor quality of backlinks created for the site.
The basic reason behind lowering the ranking of website on various search engines is creating low quality backlinks for the site and don't have much knowledge about techniques used in the SEO industry.
Few things are there you need to be careful about your website. Use theme based content and create quality back links. Try to share some useful information to visitors. So when visitor will come to check your website they can find necessary information. Follow those steps then search engine will definitely give importance to your website.