The short answer is no.
You could host a site at the server's IP address for free, but the web address would be the IP, not a standard URL. ICANN and IANA have control over all basic generic and country-coded top-level domains, and you can only get a domain name from them through an accredited registrar. ICANN charges each accredited registrar a fixed yearly fee of US$4,000 plus a per-registrar variable fee totaling US$3.8 million divided among all registrars. 
So technically, if you were an accreditted register, you could give yourself a domain name for free. But since you'd be paying to be a registrar, it wouldn't really be free. This is why it costs money to register a domain name. 
You could, however, conceiveably create a pseudo top-level domain: 
http://en.wikipedia.org/wiki/Pseudo_top-level_domain