Put the ground meat and onion together in a large saucepan. Cook until meat is browned and onion is translucent.
Add the garlic and sauté for about 2 minutes or until garlic is golden.
Remove meat mixture from pan and set aside.
Add 2 cans' worth of beans, the broth, chili powder, cumin, and salt to the pan. Using an immersion blender, blend until beans are smooth (alternatively, you can use a blender; pureeing may need to be done in batches if using a blender).
Add the remaining beans, salsa, corn, lime juice, and meat mixture back into the soup.
Bring to a slow rolling boil; turn heat down to medium low, cover, and allow to simmer, stirring often, for 30 minutes to 1 hour.
Serve with desired choice of toppings (see notes for a few ideas).