How to detect bad execution plans automatically?
I've had that problem for only on query: 
1. Scheduled job was looking in query cache for particular query.
2. When query is found it looked for bad pattern in plan. For instance: Index Seek for index XYZ.
3. If bad pattern is found, that query will be automatically deleted from query cache by it's plan-handle using DBCC FREEPROCCACHE