My apology for being so long but I think this is one such question(s) which bothers first to most people and I didn't quite get a comprehensive compilation of this.
Actually many questions: I am trying to answer them one by one.
how exactly you "implement" the license for your OSS
Basically, the minimum need to define the terms of use in the license and put it along with the source. Understand the copyright (essentially authorship) on code is something different from license (to use and redistribute). But given this, you still leave upto the other person to be honest and not misuse the code and violate the license. [More on this later, below].
If I just say I use a particular license, is that enough?
Perhaps no.
If I add a copy of the license to the distributed code?
Yes. That's perfectly fine.
Am I required to add a header on every file detailing the licensing
information? (do I manage this with subversion?)
You don't have to add license information everywhere. You may have more than one license or change license. However, to identify exactly which all files are covered under the given license declaration, it is important to put your copyright notice everywhere on top or bottom (top is only due to convenience). It's like any other book, with first page printed like Copyright 2012 - Nico.
Nothing else is much needed. See this: Do you have to include a license notice with every source file?
or should something more delicate take place, like registering the
software somewhere?
There is no concept of registration with any license. If you have provided the license along with the code, only if there is a dispute,
What are the most commonly used software licenses?
I think the answer by mikera does a good job here so I won't repeat.
Now for the most intriguing (and implied) question:
So how do you enforce? How do you ensure that people don't violate the
license and don't lie! After all it is too much to ask for that from
people when already the code cannot control itself?
The simple bad news is - you can't quite do that with a mechanism like lock-n-key. Even if you believe that you can put someone in the court to bring judgement, each court has a jurisdiction (area of influence) and you might need to fight all people everywhere. Even if you have time and energy for this, you need to prove that they have indeed taken your code and violated! That's almost hard to do given that your code is available from the source.
Don't get upset. There are things you can do. It all depends on the context and purpose.
First off, you want to open your code for open source usage, so you are typically fine (and want) that people use your code.
Suppose, you want people to use your code for tinkering or research but pay for the commercial use, you can have dual license.
In general, if your code is well known in the industry - people who will tend to use your derived code - should also typically known to you. For example, given that ffmpeg is so famous - if anyone would claim they have a new codec to offer me, I would put a ref check to see if they are not just compiling and giving me. So potentially people wouldn't violate if you are a known player in the industry. This is also another point why being on GitHub or SourceForge to distribute code makes sense (apart from the tools they help you with).
If you know the market well - you can actually check that someone is using this library, you case use - tool like strings that can produce object trace and can pick up your variables, routines name, enough to know that your code is being copied. This is possible to outsmart though, but might just work in some cases. Of course, there is a theoretical limit to attain justice if people change all lines of code still keeping the logic - there is an interesting read here: Is it possible to rewrite every line of an open source project in a slightly different way, and use it in a closed source project?
Another funny measure (if you genuinely know someone is using your code and violating) - ffmpeg keeps what is known as Hall-of-shame as a public listing on who is violating their license.
Last but most critical - what if another open source take your code, wrap it up and make it freely available with a license that permits arbitrary commercial usage? Maybe the same group with another use will start using this in their own product. For this, you need strong license like GPL or MPL.
Another such issue is, what if someone actually use your name and do something that becomes harmful to society and you end up being on the wrong side of the court? For this, you need at least No warranty clause (and also sometimes no patent infringement clauses).
If you have more complex needs, you can do dual license. It's not complicated as much but out of scope from this answer. There are good answers on this subject on this very forum.
I think at this stage, if you have quite a bit of curiosity - just read a different clauses of these licenses, you can have some good understanding about it. I am not a lawyer, and most such question in P.SE are answered with i-am-not-lawyer tag; but they are not so obfuscated either - you can actually read the text and make quite a sense out of it. Once you read this, it might clear many of your doubt.