It's possible to do it for free.
For the webhost files ... (all of the PHP stuff),
You would need to copy the template over to a PC (using FTP)
and then copy it over to your new host.
For the MySQL database, you would need to make a complete
backup and then restore it back on the new webhost.
Then, within the config of WordPress, enter the new MySQL
account host, user, password, etc.
It will be a lot of work though.
Unless there's some simple MySQL copy that I don't know about.
You might want to hire someone to do it for you.
In that case, it would not be free.
If you're just starting it, I would do this ...
Customize your own template and make a backup on your PC.
When you get a new webhost, install a brand-new version
of WordPress, create the new MySQL account and start anew.
Then, copy over your saved template. You would have lost
all of your previous blog posts, but it would be very simple to do.
If you just started your blog, you would not have lost too much?