In a large pot, sauté the onions, celery, carrots, garlic, and ginger in 1 Tablespoon olive oil for about 5 minutes.
Add the vegetable broth, water, lentils, garbanzo beans, cannellini beans, diced tomatoes, garam masala, cardamom, cayenne pepper, and cumin.
Bring to a boil for a few minutes, then simmer for 1 to 1½ hours or longer, until the lentils are soft.
Optional (for a thicker soup): Puree half the soup in a food processor or blender. Return the pureed soup to the pot, stir and enjoy.