Isn't this the Cutting Cakes problem?
The problem, here, is that while Michael might see frosting and sprinkles as equivalent, Michelle might not see them as such (for example, sprinkles are twice as tasty as frosting), or vice versa, or any of infinite other possibilities. So, of course, it's not as simple as it first looks, to divide evenly.
The classic solution, I think, is to let one person divide the cake, and let the other person choose. If you're the cutter, then your optimal strategy is to cut it into what you see as equivalent halves, and if you're the chooser, you just pick whichever one seems best to you (or a random one if both seem equal). This is fair, since if the cutter cuts the cake into unequal halves, he runs the risk of having the chooser take what he sees as the "bigger" half.
The problem here, is that the solution isn't symmetric: i.e. the cutter is guaranteed at most half of the cake, while the chooser is guaranteed at least half of the cake, so the squabble resumes over who gets to be the chooser.
My solution, thus, goes like this: First, we decide on an axis - that is, a line that all cuts must be made parallel to. Then, both people get knives, and they simultaneously cut the cake in a straight line according to what they think is a half-way point, parallel to the axis. (The Intermediate Value Theorem proves that such a line always exists, no matter the person's preferences.) Then, we have two possibilities: either the cuts happen to be the same; in which case either side can be given to either party indistinguishably, or they happen to be different. Assuming a vertical axis, in this case, we give the leftmost piece to the left person, the rightmost piece to the right person, and we repeat the algorithm with the center piece.
There are three benefits to this system, over the above one: first, this method is symmetric, unlike the above method, second, if played fairly, this method guarantees at least half of the cake to each person, and third, this method is also impossible to cheat, since using your cut to divide into unequal halves runs the risk of you getting the smaller half, as above.
There are, however, two problems: first, the method is not guaranteed to terminate, so we could keep dividing the last breadcrumb into infinitely smaller pieces, and second, it's rather difficult to implement simultaneous cutting in real life. The first problem could be resolved with the fact that in real life, after a few iterations, we reach the "scraps and crumbs" of cake, and by this time, it's more efficient to just clean up the crumbs and eat what you have. The second, however, is a bit trickier: one solution would be to take a birds-eye view image of the cake, print it twice, and have each person draw a line corresponding to their cut, and then cut along that line.
(The above assumes, in regards to cheating, that neither person knows the others' cake preference; if one knew the others, it would be much easier to cheat. How exactly is left as an exercise to the reader.)