Plant disease detection is a critical issue that needs to be focused on for productive agriculture and economy. Detecting plant disease using traditional methods is a tedious job as it requires a tremendous amount of work, time, and expertise. Automatic plant disease detection is an important research area that has recently gained a lot of attention among the academicians, researchers, and practitioners. Machine Learning and Deep Learning can help identify the plant disease at the initial stage as soon as it appears on plant leaves. In this state-of-an-art review, a thorough investigation has been performed to evaluate the possibility of using Machine Learning models to identify plant diseases. In this study, diseases and infections of four types of crops, i.e., Tomato, Rice, Potato, and Apple, are considered. Initially, numerous possible infections and diseases on these four kinds of crops are studied along with their reason for the occurrence and possible symptoms for their detections. An in-depth study of the different steps involved in plant disease detection and classification using Machine Learning and Deep Learning is provided. Various datasets available online for plant disease detection have also been presented. Along with this, a detailed study on various existing Machine Learning and Deep Learning-based classification models proposed by different researchers across the world for four considered crops in terms of their performance evaluations, the dataset used, and the feature extraction method is discussed. At last, various challenges in the use of machine learning and deep learning for plant disease detection and future research directions are enumerated and presented.