Melt butter in large stockpot. Add onion and cook over medium heat until softened, about 6 minutes.
Add flour and stir to coat. Cook for 1 minute.
Slowly whisk in half and half, chicken stock, salt and pepper. Simmer for 10 minutes.
Stir in broccoli. Allow to cook for 20 minutes.
Use and immersion blender to puree the soup (or transfer to blender). If you want your soup a little thicker remove some of the broccoli to keep some whole.
Add both cheese and stir until it is fully incorporated.