It's taken me some doing, but I've sorted out a mechanism for determining the profitability of clients for a software firm. It's based on some careful measures of the amount of billable hours, non-billable time, and support time (usually a mix), which in turn requires careful time reporting by all staff, and accurate tracking of projects to clients (e.g. they're usually not 100% dedicated to a single client. In turn, this has given me a pretty good understanding of the ideal client size in terms of license revenues, billable hours, number of total hours spent in support, and where the most expensive staff are spending their time.
Take that, decision-making challenges!