Conditional control flow is possible but currently not efficient. The current implementation will evaluate both sides of an if construct (see tensor.switch()).
While- or for-Loops within an expression graph are not supported, but soon will be.
A scan op is in theano.sandbox, but not quite ready for mainstream yet.
Neither goto nor recursion is supported or planned within expression graphs.