Best explained with an example:
for (int ix = 0; ix < 10; ++ix) {
Console.WriteLine(ix); // Break here
}
Type an expression in the breakpoint dialog that evaluates to a simple bool or integral value. For example: "ix / 2". When you run it, execution will break on the first pass through the loop and only whenever ix is an even value.
This is not a data breakpoint btw, alluded to in another post. Those are not supported in managed code. The debugger actually breaks program execution temporarily and evaluates the expression every time. Only to stop execution when the expression value has changed. This can make your code run a lot slower as a side-effect.