Does using deterministic wallets reduce our anonymity? Is it possible to figure out that certain addresses belong to the same wallet? Say I have 2 or 3 addresses that I know were created by a deterministic wallet like Armory. Is there a way to find all the other addresses that have been used by that wallet? I mean by that instance of a wallet, not all the addresses created by the Armory software.
It is hard, if not impossible, to do so when you only have the addresses. Most clients that support multiple deterministic addresses for a wallet, make sure it is impossible to know that two or more addresses are linked together. They usually use a random value as the starting seed and another random value to chain consequent new addresses. 

Also keep in mind that they chain the addresses by generating new private keys. These private keys are generated through their algorithm (and are already hard to link together), but normally no one will come to know the private keys of the addresses you use. So it is already hard to link private keys together, but it is even harder to link addresses resulting from the public keys together. So it's good to assume it's impossible.

But, there is more than the addresses alone. There also are transactions. Most wallets generate a new address from a sequence whenever change is generated. This way, people could f.e. track all the transactions coming from one of your addresses and be able to follow the chain of addresses from your wallet.

To do so, they must be able to distinguish between transaction output and change, which is not trivial. This is not easy, especially when you have multiple transaction outputs. Also, once they make one mistake, they lose their track. 

But this method is not as hard to exploit as using the addresses. However, the vulnerability of this method has nothing to do with the fact that you use a deterministic wallet. People will also be able to do this if you would generate completely random addresses for every change output.