Has anyone tried the opportunity gate keeper from Full Circle Insights?
https://appexchange.salesforce.com/listingDetail?listingId=a0N3000000B5OS6EAN
Also here: http://fullcircleinsights.com/products/opportunity-gatekeeper/
This problem is a hassle and this app looks promising. Sales can create opportunities from the account, quick create, and opps tab without filling out the required information, and this looks like an easy way to enforce.
Or free recommendations is great too!
https://appexchange.salesforce.com/listingDetail?listingId=a0N3000000B5OS6EAN
Some alternatives would be:
1. create a primary contact field on the opportunity, make it required and have it create a contact role
2. use rules to automatically populate contact roles: could use contacts belonging to the account with activity in the last X time period for example
3. put a trigger on the opportunity to require contact role to move the opportunity forward past a certain stage