Reading the answers, I feel that it is quite confusing topic, so will try to give my own answer.
First, what do you call by the version of .NET Framework? In fact, it can mean several things:
The stuff in Add/Remove programs (Uninstall a program in Programs and Features under Windows 7) control panel item or the stuff in Turn Windows features on or off list.
The set of installed components.
The setup executable you would download from Microsoft website when you want to install .NET Framework.
The CLR. See the great comment by Nate Bross to the answer posted by simendsjo on this page for more details.
Depending of what do you mean by .NET Framework version, the answer will be different.
In Uninstall a program and Turn Windows features on or off, you can probably find one or two latest versions. Currently, I have .NET Framework 3.5.1 as "Windows feature", and .NET Framework 4.0 in "Uninstall a program". I would not expect any other versions here, since a program compiled for .NET Framework 2.0 will run fine on a machine with .NET Framework 3.5. As a proof, compile a Hello World targeting .NET Framework 2.0 and start it: it starts.
In C:\Windows\Microsoft.NET\Framework, you would rather find every version, from 1.0.3705 to 4.0. Why? Because every new version of the framework adds features to the older versions, instead of rewriting everything. Here, I would strongly discourage to remove even the directory v2.0.50727. Probably the most recent programs written in Visual Studio 2010 and compiled to run with .NET Framework 4.0 still require 2.0 components.
When downloading .NET Framework setup executable, you don't have to think about older versions, as well as you don't have to download every version from 1.0 to 4.0. Download only the most recent one, it will be fine.
Note: it is essential to understand that the different versions are not standalone, but rather change or add something from/to the older versions. That's all the stuff about references to .NET Framework assemblies. For example, you could have a strange situation: a basic application which uses WCF (WCF was released in .NET 3.0) runs well on a machine which has only .NET Framework 2.0 installed, but crashes only when trying to execute something related to WCF: assemblies are loaded on demand, so until you require a component from .NET Framework 3.0, components from older versions will be used.
Hope this makes things easier to understand.
One more question, Do windows relies
on .net framework? I mean can my
machine work if it doesn't have any
.net framework? :)
The operating system itself does not need .NET Framework to function properly. But some components require .NET Framework. As ChrisF said, Microsoft XPS Viewer/Printer is an example. Microsoft Live Writer is another one.