There are a variety of methods and your approach will depend on the type of website you're running and what your budget looks like. If you're working on a basic, small static site on your computer and publishing it to a server somewhere, then you already have two copies (local and the remote server) and are probably safe. You could add a basic service like Dropbox and periodically put a copy in there to push it to another off-site location.
If you're running a more complex site on a dedicated server, then I'd recommend keeping a copy of everything (including database SQL scripts) in a source control system. Services such as Unfuddle offer free basic accounts which will give you access to source control and a basic ticketing system, among other things, which not only keeps a copy of the website in its off-site source control repository, but also tracks changes as they're checked in. You can add to this a service such as Tomahawk, which runs on the server, to keep the server's copy of the files and live data backed up regularly and automatically.
For larger deployments with multiple servers, it's likely that you will have someone with more experience available who can provide guidance and the use of on-site backup tools in concert with more robust off-site backup solutions to ensure nothing is ever lost.