Without more information, the best I can say is maybe.
What was the OG, the recipe, the yeast strain, etc.?
Often times a recipe predicts a 75% attenuation even though the recipe is not likely to achieve it, due to adjuncts, specialty grains and yeast choice.
If you pitched a good amount of yeast and your temperature was consistent and above 65F, and it has been in the fermenter for 3 weeks then it should be done and safe to bottle. I've had many beers finish higher than 1.020, but I usually have expected it and when it was unexpected, I was able to determine why my expectations were incorrect.
Craig