Bring a large pot of salted water to a boil. Add the elbow macaroni and cook according to the package directions until al dente. Drain well and set aside.
In a large saucepan over medium heat, melt the unsalted butter.
Sprinkle the all-purpose flour over the melted butter and whisk together to form a smooth roux. Cook for 1 minute or until light golden brown.
Slowly pour in the whole milk and heavy cream, whisking constantly to keep the sauce smooth. Continue to whisk until the mixture thickens and starts to bubble, about 3–5 minutes.
Reduce the heat to low. Add the salt, pepper, garlic powder, and onion powder. Stir to combine.
Remove the saucepan from the heat. Gradually add the shredded sharp cheddar cheese and Monterey Jack cheese by the handful, stirring constantly until the cheese melts completely and the sauce is smooth and creamy.
Add the cooked elbow macaroni to the sauce, stirring gently until the pasta is thoroughly coated.