You want to associate an email with a PGP fingerprint right? So what you do is you take the email address, turn it into a Bitcoin address, and make a dust payment to that address. The email->Bitcoin marker scriptPubKey should be:
HASH160 Hash(email | magic) EQUALVERIFY
That say if gmaxwell's P2SH^2 thing is implemented it still looks like a valid address. It's now unspendable, so clients can easily find it in the UTXO set, and you can check if someone else has registered your address first by checking for existence in the UTXO set.
So that registers the name. Now to securely link that name to a PGP key, create a message consisting of simply the fingerprint, optionally sign it, and then create a multisig output:
1 Hash(message)
The pubkey is just there to give an easy way to show that the fingerprint has been changed to clients relying on proofs of the UTXO set contents in the future by spending that magic output.
The rules then are that the first registration *can* be unsigned, and latter ones *can not* be. (subject to say a 1 year expiration)
When the system is setup, someone the creator should secretely select the magic number mentioned above, timestamp as many PGP keys and user IDs from the keyservers as they can, then reveal the nonce publicly. As for those pubkeys, they can create individual ones for each key timestamped, encrypt the secret keys to the fingerprints being put into this CA, and make that data public so the true owners can spend those outputs and reassign them to their own pubkeys. Maybe even add that encrypted message to the insertion transactions as data to make it easier to retrieve.