There's two things you need - hosting and a domain name. You can sometimes get both for free, depending on whether you're prepared to put up with ads and a not-nice domain name. Alternatively, you can look at hosting yourself - but you will need a machine on 24/7 to do this (and an internet connection to cope with the traffic!)
The easiest way to get a nice domain name and good quality hosting though is to just pay for it. Mine costs £60 a year which isn't bad for what I get - domain name, 100 SQL databases, unlimited storage space / bandwidth, the usual PHP support and more things that I can't remember.
Best thing to do is probably to design your site first, then look at hosting options (so you don't pay to have nothing online!)