(Windows OS solution) Symbolic links are an excellent solution to hosting games in a location that isn't the actual install location, or on a hard drive that is not your primary drive. They are similar to creating shortcuts, but the difference is that Windows will see them as actual paths, not shortcuts.
C:\ is my primary drive. Windows is installed on this drive.
I create a symbolic link (very similar to a shortcut) at 'C:\Battlefield' which points to 'E:\Battlefield'. Now, I can install Battlefield to 'C:\Battlefield', and as far as Windows is concerned, that is where it is installed. But, the files are actually kept on 'E:\Battlefield' since that is where the symbolic link points to!
The command for this would be:
mklink /D "C:\Battlefield" "E:\Battlefield"
For this command to work, the target ("E:\Battlefield") must exist, and the link ("C:\Battlefield") must not exist before the command is executed.
If you already have your application installed at the C:\ directory, you could copy it over to the E:\ directory (while it isn't running), and then delete the empty C:\ folder before executing the command.
You can execute this from windows command line. In Windows 7, just type 'cmd' into the search bar within the Start menu and press Enter to open the command line. In Windows XP, go through Start menu, click 'Run' and then enter 'cmd' for the parameter and press Enter!
I only used the name 'E:\Battlefield' as an example, you could name this whatever you want. 'E:\games\bf3' would work as well, or whatever other path/name you wish to give it.
This method is extremely effective when your primary hard drive is a solid state drive without much space, but you want your installed applications to be seen on the primary drive. Especially nice for the Steamapps folder, or specific games within it.