I've read a lot about how good it is to host images on a subdomain like "img.mysite.com". I am using ASP.NET MVC 3 but I have no idea how can I save/remove an image on a subdomain. I would like to point out that I don't want to use a subdomain as a subfolder in my website's directory. I'd like to know a general approach of saving an image to a subdomain when the subdomain can be even on another machine.
That allows you to scale and cache the images and application independently.
First off, you don't save images to a subdomain - that's a DNS naming mechanism. You put images on a machines disk that has a web site pointing to that disk location, the web site has an IP address, and DNS has a name that resolved to that IP address. So, it's just a problem of moving files to another disk.
Getting images to that disk can be done via (1) FTP (2) http post (3) webdav (4) dropbox etc... etc... There's a myriad of ways to get an image on disk.
Your application site likely has a configuration setting on the name to prepend (images.mysite.com) to each static resource request.
Another thing you should look into (and a key reason why separating out not only images but static resources) is CDN which is a content delivery network. Services such as Azure and Amazon offer them as well as popular services like Akamai. They specialize in servicing up static resources very fast and off load the work from your application servers. They are also geolocated so users pull that static resource from a location close to them. If you go that route, consider pulling other static resource (js, css, etc...) as well and give it a name like resources.mysite.com.
Even if you don't go the CDN route and even if you have one machine now, you can separate the two and provide a configuration setting for the resource DNS name so your code supports it and you can split, move, etc... the static resources at any point.