1. PM me with a list of all user IDs eligible to receive something in the giveaway, or an exact set of conditions which users must meet in order to be eligible (eg. "any user who joined before
2. I will create a URL like https://bitcointalk.org/giveaway.php?id=123 for you (note: 404 currently). Everyone who wants to receive something in the giveaway has to go to that URL and get a giveaway code.
3. They send the giveaway code to you along with their mailing address, and you'll verify the code at another bitcointalk.org page. You also have to keep a list of already-used codes so that people can't reuse them. You should publish some out-of-band way of accepting codes, such as an email address or a Google Forms form: if you only accept codes via forum PM, then people have to create throwaway accounts to PM you, which is annoying. You absolutely must not send someone an item without a code, even if they PM you from an account you can see is eligible for the giveaway, since otherwise someone could also send you their code anonymously and end up getting 2 items.
~~
For point 1, is this way effective enough sir? I mean that you will be a bit busy to receive lots of PMs by implementing this step. I think it will be better to post on a special thread of "private giveaway eligible users". Although this looks like to be less of privacy, it seems to be more effective. Then, the next step can be planned to have more private ways. So overall, it is still private in the end.
IMO, CMIIW..