Recently I registered for a domain name and bought it. I had failed to check their hosting plans first :(. They charge a lot for hosting a website. I am thinking of hosting it under some free web hosting provider. How do I host my website with another web hosting provider which is not the provider I registered the domain with?
You just need to change the DNS settings for your name through the company you registered it with. This process is slightly different for each registrar but it's not difficult to do. You could also transfer the name to whoever you decide to do hosting with if they provide that service.
Hopefully the picture below gives you at least an idea of what to look for.
As Pete said, just change the nameserver records to the new host. I bought a domain name with 1&1, but found $25/yr hosting at A Small Orange, so I changed my nameservers from ns1.1and1.com, etc to ns1.asmallorange.com, etc. It works differently for every domain, but the basic steps are the same. They do say that changes may interrupt their services, but you don't want their services. You want to map your domain name to a new host and use their services instead. If it doesn't work out, you can always revert to the original nameserver settings and original host.
You could also use CNAME settings to map your domain to another host, but I don't know as much about that. However you do it, it might take 48 hours, but be patient and your new host should be recognized and your website up and running.
You can transfer your hosting services from one provider to another. I have followed some simple steps while transferring my services from Godaddy to Bigrock
Create a Backup of Your Website Data
The next step here is the domain registration company to go about changing the information from your old DNS information to the new DNS system. Typically, this process takes about 24 to 72 hours that may get further extended depending upon the responsiveness of the registrar.
Initiate Uploading of Files to the New Server