3 weeks is not too long; often advised as standard fermentation time. But the answer depends a bit on your set up. Is the seal tight, are you opening it regularly to have a look? If well sealed and left alone, it'll be fine.
All said, I caught another thread about a metallic taste, and the homebrew store seemed sure that 3 weeks was too long and the probable cause. Now I'm not convinced about that, but it did have me think, if I know fermentation is finished, then it should be kegged ASAP to prevent infection or oxidation. It certainly won't harm it, and can only do good. So I'm planning on shortening my fermentation time, kegging once done. Of course, you need a hydrometer to determine that.