You're right. It is your deodorant (almost all deodorants contain aluminum) in combination with the urea of your sweat. The aluminum and the urea create a chemical reaction that creates the yellow stains.
Switching deodorants won't help unless you switch to an aluminum-free deodorant, which are hard to find in any general store (you can search 'aluminum-free deodorant' on Amazon to find some).
You CAN prevent the stain on new T-shirts (or at least lighten it a bit if it's already set in on older shirts), but it requires some extra laundering techniques. Prior to washing, scrub a 1 to 1 paste of OxiClean and water into the stain. Allow to soak for 1 hour, then wash in hot water. On brand new shirts, this works very well, but on older stains that are already set in, not as well, but much better than not.
Also, the sooner you do the pre-soak after wearing, the better (doesn't give the urea and aluminum time to react). It's very old-fashioned, but you might consider buying a diaper pail that you can fill with the OxiClean/water combo to soak your Ts in until you're ready to launder them.
Another efficient (and much easier IMO) option is to use dress shields. They are a replaceable fabric barrier between you and your clothes that protect the clothing from both the deodorant and sweat.
