Qualitative explanation of how COSY works
In the 1D-proton experiment a hard 90° pulse is applied to the sample before the FID is acquired over some time, t. This set of events is known as the ‘pulse sequence’, and the resulting data is in the time domain, and needs to subjected to a Fourier transform in order to get a 1D spectrum in the frequency domain. 

2D experiments are measured much in the same way, except instead of running the pulse sequence once, we run it multiple times, changing some variable and collecting all of the data into one set which will later become the 2D spectrum. [*]

The  standard COSY experiment is one of the simplest 2D experiments to understand. It’s pulse sequence differs from the 1D-proton experiment only by an additional hard 90° pulse. We can explain most (though not all) properties of the COSY experiment using a vector model with no mathematics. 

—

Consider a single magnetisation vector, M, which isn't coupled to anything. $\ce{CHCl3}$ would be a good example of this, and leads to a single cross-peak along the diagonal of the  resulting COSY spectrum (a trivial result, but easier to explain). 



The experiment consists of 4 steps:  


An initial 90° pulse is applied, which transfers M from the z-axis down to the y-axis. This is no different to the pulse used when acquiring a 1D-proton spectrum.
M is allowed to precess for some time, t1. During this time, M ends up somewhere in the xy-plane (having both an x and a y component). The exact position will depend on the length of t1, which is the variable we will differ during the acquisition of our COSY. 
A second 90° pulse is applied. This 90° pulse transfers the y-component back onto the z-axis (-z to be precise). The x-component is unaffected (this requires more than a qualitative explanation). 
Immediately following the second 90° pulse, we detect. The FID is acquired during t2, which remains constant (just as multiple scans of a 1D proton are acquired for the same length of time). What we are actually acquiring is the residual magnetisation in the x-axis (which wasn't affected by the previous 90° pulse), similar to the standard 1D-proton experiment. If we applied a Fourier transform at this stage, we would indeed just end up with a 1D spectrum. FID in memory to be combined with subsequenc
The above procedure (steps 1-4) is repeated, changing t1 and keeping all other variables constant. For each value of t1, the FID is recorded during t2 - this is the basis of the COSY experiment. The data is combined into a single set, and a Fourier transform applied twice which gives us the 2D-COSY spectrum in the frequency domain. In this simple case, we'd end up with a single cross-peak along the diagonal corresponding to the chemical shift of the proton (in $\ce{CHCl3}$) as expected:




In more complex systems, where multiple protons are present, we observe additional cross peaks in the COSY spectrum off the diagonal corresponding to the coupling between pairs of spins. 

The appearance of these additional cross peaks cannot be explained qualitatively using a vector diagram (as per above), but is a consequence of the second 90° pulse that we apply prior to acquisition of the FID.

Where coupling exists, the second 90° pulse doesn't just change the position of the magnetisation vector M, but also causes a population change for the transitions of the spin system through a phenomenon known as coherence transfer.

[*]: There is some potential confusion here, as even in a 1D experiment, we typically run the pulse sequence multiple times in order to improve signal:noise ratio. In this case, all of the variables are kept constant. In a 2D experiment, we run the pulse sequence multiple times, changing some variable in order to build up a 2D data set. We may also run the set of pulse sequences multiple times, to improve signal:noise ratio as per the 1D experiment.