As long as you own the domain name, then you can transfer it to another host.
The best way to approach this is to contact the hosting company where you want to move and ask them if they can move a wordpress site from your old host to the new host. The biggest challenge is moving the database, so be sure to confirm they can do that before you move. I've listed one blog hosting company below that I know can move Wordpress blogs. Of course ask first, and then you'll know for sure. Anyway, this is a good question to ask before you start a blog.
Yes, you will need all your codes and your database files uploaded. There might be some editing about your code on database connection, database name, database user and password other than that everything will work out just fine.
I want to suggest this site
Yes you can using an ftp software like filezilla so that you can upload your site to your new web host. Most paid hosting plan has an ftp support. You can try myhosting in transferring your website.
What you want to do is to open a website account with a good web host. Then you use Fantastico to make a new Wordpress blog.
You then upload all your pages from the old blog to the new blog. So the new blog is basically a copy of the old one.
Once all of your stuff is on the new blog, you go to the old blog and you setup a 301 redirect, for each of your posts. So if someone types in the address of a post, they are redirected to that post on your new blog.
Below I have put a link to a plugin to automate the 301 redirect process, an article about good blog hosts and an article about how the search engines see the transfer.