Your need to keep active the sub domain on WordPress otherwise you will loose any backlinks you have gained. I've made a few steps that you can follow but its important to note when you 301 redirect there is always a loose in some juice as Google makes it this way to dis-en-coverage people to use 301's as well as ruling out abuse (It's very little juice that is lost but of course this can mean that your rankings shift, it'd be bad advice if anyone told you otherwise). Most important thing is to redirect to the revalant pages.. for example cats > cats, dogs to dogs. If your doing a cleanup and deleting page about cows, don't assume that a 301 to Cows > Root is a good thing to do since sometimes a 404 is a good thing to do as Google dislikes people trying to retain 100% juice on deleted pages by people going to pages that has nothing to do about Cows - If that makes sense. Many people assume that 404's are bad when in fact they are completely normal and not a bad thing at all, as Matt Cutts has said many times.
Steps to Follow
- Register a new domain and new hosting account somewhere
- Verify your WordPress sub domain with Google Webmaster Tools
- Make the new site on the new domain but temporary block robots.txt so its not indexed on any search engine.
- Once site is ready to go live you need to ensure on the old site that you have continue to have active 301's redirects to the new site, again you need to keep this sub domain active otherwise you may loose backlinks. Use the code found at the bottom.
- Remove the block from robots.txt so Google can index your site.
- Now tell Google your site has moved to the new URL.
PHP Code you should use on your old site since .htaccess is not possible on WordPress Free Hosting
<?php
// Permanent redirection
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.yournewdomain.com/");
exit();
?>
This should be setup on every single page and match the new page on the new domain...
Root yournewdomain.com/ = header("Location: http://www.yournewdomain.com/");
Pages yournewdomain.com/page1/ = header("Location: http://www.yournewdomain.com/page1/");
Pages yournewdomain.com/page3/ = header("Location: http://www.yournewdomain.com/page3/");