At first the counting system might seem quite random. But rather than wondering whether there is a counter for blocks of cheese, or for objects containing slices of ham, a better strategy might be to use the counter you already know (and the first one you should know is つ) and take it from there.
That is to say, you start out by saying サンドイッチ2つ. When you learn about the usage of other counters, you may choose to use サンドイッチ2個 or even サンドイッチ2切れ (depending on the type of sandwich) and this last one is probably the most elegant way of saying "2 sandwiches", if you are thinking of those cut triangles.
切れ works for slices of ham, because the ham is cut. Similarly, it works best for sandwiches, which are cut (like triangles or in whatever other way), and one half, then, would be 1切れ. In Japan most sandwiches are made, and then cut, which allows you to see the filling. If your sandwiches aren't cut in half, you might get away with 切れ, because the bread and the ham are cut, but 個 (or つ) might be more natural...
枚 works for slices of bread, but not really for sandwiches, because sandwiches contain multiples layers themselves. 枚 works best for things, which are flat and are essentially one layer. But then, it all depends on the sandwich. If you were to make a flat sandwich from pita bread (which you cut open, rather than cutting it into two halves) with, say peanut butter and honey, then 枚 may well be appropriate.
On the other hand, Middle Eastern style sandwiches (e.g. filling rolled up in lavash bread) might accommodate 本, etc.
In my mind, the better strategy is to start with the counter and see what objects you can count with this counter, rather than to start with an object and see what counters are allowed to count that object.