Adjust oven rack to upper-middle position and heat broiler.
Prepare an ice bath (cold water and ice) large enough to hold the asparagus.
Cut ends off the asparagus and set aside.
Fill a large skillet ¾ full of hot water, bring to a boil. Add asparagus and a heaping tablespoon of salt. Cook for about 2-4 minutes or until lightly cooked. Immediately plunge asparagus into ice bath to stop the cooking.
Melt butter in now empty skillet over medium heat. Add flour and cook, stirring constantly until golden, about 1 minute. Whisk in milk and bring to boil. Reduce heat to medium-low and simmer until thickened, 3-5 minutes., whisk in ½ cup Parmesan and Monterey jack until smooth, season with salt and pepper. Turn off heat. Cover and let stand for 5 minuets.
Place asparagus into an oven proof serving dish and drizzle sauce over center of asparagus and top with remaining Parmesan. Broil until cheese is golden and asparagus is tender, 4-8 minutes. Serve.