Grid and cloud systems are consider as distributed computing but the main difference in cloud systems that make them distinct is the live migration during their processes without any interruption for users. cloud systems also exploits Virtual Machine features and benefits.
I think the key difference is that grid computing is about geographically scattered resources being used together to solve a single problem, and cloud computing is about using a given set of resources (often at one location) in a flexible manner over time to meet different requirements of different users.
Cloud provides computation as a service (e.g. like providing electricity to people and you can do anything with it; very raw service); grid provides a specific well defined parallel computing service, with parallel programming model and environment and so on (e.g. as an analogy like providing a car fleet renting service; where you use actual cars...)
Grid is a distributed system providing an infrastructure for executing distributed applications. The applications, in general, have multiple process organization, communicating by message exchanging. The infrastructure runs over computers of a pool of participants that agree to share resources like memory and processors. Usually grid is used in applications with high performance requirements like that of physics, biology, and meteorology. Cloud is a newly and a more general concept using the virtualization paradigm and being service oriented. The services may be provided as infrastructure, platform or application. It is possible to have a Grid software running over a Cloud. We can request specific virtual machines to run our application or we can access a service to process a transaction like a hotel booking request.
Grid computing system is a widely distributed resource for a common goal. It is Brother of Cloud Computing and Sister of Supercomputer. We can think the grid is a distributed system connected to a single network. This types of computing work with the large volume of files. Basically, it is a cluster types system. So people call it cluster computing.
Grid computer tends to be more geographically disperse and heterogeneous by nature. Grid network also has various types. A single grid is like dedicated connection but a common grid perform multiple tasks.
The size of the grid is large. So grid computing is like supercomputing. It consists of many network, computer, and middleware. Grid computer is dedicated to some specific function of the large volume of data. In the grid process, each task divided into a various process. All the process starts execution simultaneously on a different computer. As a result, very few seconds needs to execute and enjoy the flavor of supercomputing.