How to know there is a new transaction? I am developing a program that monitors transactions. 
The first question is how can I know there is a new transaction? I can consider the command listtransactions. However, there is a bit of an issue about this command which I posted in another thread. In short, I can't list transactions from all accounts by NOT providing the account parameter.
Even if it works for me. The API says: 
listtransactions    [account] [count=10] [from=0]    Returns up to [count] most recent transactions skipping the first [from] transactions for account [account]. If [account] is not provided it will return recent transactions from all accounts.  

I ran this command with parameters: "", 1,3. I still got the first 3 transactions. 

Does anybody have a better idea about how to get new transactions that have not been checked?
First: to get transactions from all accounts, use the "*" wildcard.

Second: Bitcoin version 0.5 includes a new listsinceblock RPC command that makes polling for new transactions more efficient.

I wrote a monitorreceived patch that does an HTTP POST whenever a new block or transaction-to-or-from-your-wallet was received, but I haven't pulled it into mainline bitcoin because it would make it VERY easy for websites to do the wrong thing and treat 0-confirmation transactions as "paid" and because it isn't clear what (if anything) to do when block chain re-organizations happen or transactions are orphaned (double-spent).