Several options exist in gpg. Note that you can use all of these in your gpg.conf file to set them permanently (by ommitting the '--' in front of the long options, but note that --try-secret-key is an option only available in version 2.1beta1+, which has been in beta for 3 years now. The documentation was generated by error I think as most people won't have this option available):
--hidden-recipient name
-R Encrypt for user ID name, but hide the key ID of this user's key. This option
helps to hide the receiver of the message and is a limited countermeasure
against traffic analysis. If this option or --recipient is not specified,
GnuPG asks for the user ID unless --default-recipient is given.
--hidden-encrypt-to name
Same as --hidden-recipient but this one is intended for use in the options file
and may be used with your own user-id as a hidden "encrypt-to-self". These
keys are only used when there are other recipients given either by use of
--recipient or by the asked user id. No trust checking is performed for these user
ids and even disabled keys can be used.
--throw-keyids
--no-throw-keyids
Do not put the recipient key IDs into encrypted messages. This helps to hide the
receivers of the message and is a limited countermeasure against traffic analysis.
([Using a little social engineering anyone who is able to decrypt the message can
check whether one of the other recipients is the one he suspects.]) On the
receiving side, it may slow down the decryption process because all
available secret keys must be tried. --no-throw-keyids disables this option. This
option is essentially the same as using --hidden-recipient for all recipients.
On the receiving end... Note that it can be particularly annoying if you have many private keys because gpg will prompt you for your passphrase for each one until a working one is found. To cycle fast through the prompts, just press enter for the wrong keys, gpg shouldn't prompt you more than once per key like this.
There are a number of techniques possible for receiving software (like mail clients) to alleviate this problem. The most practical I know of is to generate a temporary keyring with the key(s) expected to be the anonymous recipient (eg. the email address you received the mail on). On failure with that/those keys, gpg should be called again without changing the keyrings in order to try all the users secret keys. The commands are as:
gpg --export-secret-keys <key(s)> > tmp_keyring
gpg --decrypt --no-default-keyring --secret-keyring tmp_keyring <...>
On failure:
gpg --decrypt <...>
Here are the options:
--try-secret-key name
For hidden recipients GPG needs to know the keys to use for trial decryption.
The key set with --default-key is always tried first, but this is often not
sufficient. This option allows to set more keys to be used for trial
decryption. Although any valid user-id specification may be used for name it makes
sense to use at least the long keyid to avoid ambiguities. Note that gpg-agent
might pop up a pinentry for a lot keys to do the trial decryption. If you want
to stop all further trial decryption you may use close-window button instead
of the cancel button.
--try-all-secrets
Don't look at the key ID as stored in the message but try all secret keys in turn
to find the right decryption key. This option forces the behaviour as used by
anonymous recipients (created by using --throw-keyids or --hidden-recipient)
and might come handy in case where an encrypted message contains a bogus key ID.
--skip-hidden-recipients
--no-skip-hidden-recipients
During decryption skip all anonymous recipients. This option helps in the case that
people use the hidden recipients feature to hide there own encrypt-to key from
others. If oneself has many secret keys this may lead to a major annoyance
because all keys are tried in turn to decrypt something which was not really
intended for it. The drawback of this option is that it is currently not possible
to decrypt a message which includes real anonymous recipients.
If you are interested in privacy another option might interest you. It is literally useless and downright bad for your privacy to emit your OS and software version when sending emails:
--emit-version
--no-emit-version
Force inclusion of the version string in ASCII armored output. If given once only
the name of the program and the major number is emitted (default), given twice
the minor is also emitted, given triple the micro is added, and given quad an
operating system identification is also emitted. --no-emit-version disables
the version line.
For a general overview of gpg best practices for security and privacy, check out this primer by riseup labs.