Most kit instructions will tell you to do a primary for 5-7 days, then secondary for a week or two . . . it's based on outdated information on how yeast works. It's also based on their desire to sell you more kits (if you shift and bottle faster, you'll have more room freed up to brew more).
The truth is, beer operates on a bit slower schedule, and you just can't rush it. 3 weeks is pretty normal for a good fermentation . . . even after you've reached your FG, your yeast are still working to "clean up" your beer, eating all those secondary and intermediate compounds they produce on their way to making alcohol.
Also, yeast operate on their own schedule . . . some beers will reach FG in just a few days . . . others a week. Sometimes it takes a month. The only way to REALLY know if fermentation has finished is to take a gravity reading with your hydrometer.
Generally, I start testing for FG at about 2 weeks. I take one sample at 2 weeks, then another 3-4 days later. Provided those samples are the same gravity, I know I'm done fermenting . . . and I generally schedule my bottling for the next weekend (more time in the fermenter won't hurt your beer! Bulk aging helps, almost always!).