Right now, it is with the use of "helper services", better known as host caches. It is essentially a well known Gnutella peer that is always running - at least, they're supposed to according to the owners
Peers in need of more connections will connect to this particular host cache. The host cache will record the IP of the peer in its cache and send out a number (say 10) other IP addresses from previous peers. The client then uses those IP addresses to connect to another peer, and the cycle begins.
Such host caches do indeed introduce a "central" piece to a decentralized network, but they're not required part. They're just "helpers", to make your life a bit easier. If all these central host caches were removed, anyone could still connect to the network.
For instance, it could be as simple as your friends e-mailing you a specific e-mail address. It could be someone posting his IP address on a newsgroup or on a chat room.