In a large saucepan, saute onion and garlic over medium high heat until tender (just a couple of minutes).
Add butter and flour, lower heat to medium, and cook until roux is bubbly and starting to brown (it will start to smell amazing!).
Pour roux into a large stock pot and add chicken broth, stirring the entire time you add the broth to prevent lumps.
Add chicken, broccoli, salt, garlic powder, black pepper, cayenne pepper, and hot sauce to stock pot and cook for about 35-40 minutes (less if using frozen broccoli).
Stir in cheese and milk until cheese is fully melted and serve.