The absolute limit is the size of the block, which is currently hard-coded at 1,000,000 bytes. Each transaction takes up a variable amount of space, but ~250 bytes is about right for a simple (one-input one-output) transaction.
However as soon as a block is solved there is no benefit in hanging on to the block and adding in more transactions, as opposed to broadcasting it immediately. So the number of transactions in a block is actually a function of the number of transactions being generated over a time period and the time taken to solve a given block.
Blocks commonly contain fewer than 200 transactions. The largest number of transactions in a block to date is 1,976.