Place chicken in a long, shallow glass baking dish.
Pour the buttermilk over the chicken, cover and refrigerate for a least 4 hours, turning once or twice. In a clean plastic or brown paper bag, combine the flour, salt, pepper, paprika, and if desired the garlic and onion powders.
Drain the chicken and place two or three pieces of chicken in the bag and shake well to coat evenly.
Repeat until all chicken has been coated with seasoned flour mixture. In a large, heavy skillet, heat about one-half of oil over medium-high heat until hot, but not smoking.
Add chicken (in batches if necessary) and brown on all sides, about three minutes per side. Place browned chicken on a warm platter until all pieces are cooked.
When all the chicken pieces are browned, crowd them into the skillet, turn heat to medium-low, cover and cook, turning occasionally, until tender, about 35-40 minutes.
Remove cover, turn heat to medium-high and cook six to eight minutes more or until skin is crispy.