Number of transactions per block I am just starting to understand the internals of bitcoin. I am a CS graduate and familiar with most bitcoin terminologies. I've read Satoshi's paper and researched the question but I couldn't find the answer. 

Now that it is much more profitable to mine blocks for the reward (25coins) than the transactions fees. my question is what prevents miners from only including 1 (or 0 if its allowed) transactions in their generated blocks as hashing smaller data will result in greater hashes/s (yes?)

Also, and most importantly is how does a miner decides that enough transactions has been received and start finding the nonce as adding a new transaction to the attempting block will result in all the work done for this block as obsolete.

I'll try to give my guess so correct me if I am wrong. While the miner tries to find the new block it buffers any received new transactions. If he/she finds the new block or a a new valid block is received they start working on the next block by putting all the buffered transactions into a new block and get to work. 

Please excuse me if my questions seems primitive. I tried my best to research and any links are greatly appreciated. 
Thanks.
Nothing is stopping miners from not including transactions in their blocks, in fact it has happened before.


  hashing smaller data will result in greater hashes/s (yes?)


No, the hashes are always the same size, and adding transactions to the block does not make any difference to the difficulty in finding the nounce that validates the block (the speed of hashing remains the same, and the probablity of finding the bock also remains unchanged), hence it makes financial sense for miners to add as many as they can since they earn more transaction fees.

Edit: for more details on the mining process, this thread provides a good summary:


  Simplified mining process 1) Miners select tx from the memory
  pool for inclusion in a new block (the number, method, and criteria is
  up to the miner) 2) Miners construct a merkle tree from the tx in
  step #1 3) Miners create a block header with the merkle tree,
  prior block hash, version, timestamp, and nonce 4) Miner will
  hash the blockheader.  If it is a solution go to step 5. 4a)
  Miner will increment nonce and go to step 4.  If nonce range is
  exhausted go to step 4b 4b) Miner will modify another element in
  blockheader, reset nonce range back to 0 and go to step 4 5)
  Miner has found a block.  They broadcast it to peers.  So
  once a miner finds a block they are done.  All the work for deciding
  tx comes BEFORE solving a block.


So the number and size of transactions has no real impact on the repetitive step #4.

Having said that, it has been claimed that some miners do choose smaller blocks in order to minimise network propagation delays, and hence reduce the chance of their block becoming an orphan.