1) Constructing a transaction;
2) Broadcasting the transaction to the network (other nodes);
3) Having the transaction included into the blockchain by a miner;
We can use "Bitcoin-Qt > Help > Debug window > Console" to complete step 1) and 2) of sending one Satoshi. But whether step 3) can be completed is up to the miners.
That isn't exactly true.
Most clients (QT client included) will prevent you from creating a tx that the client itself will not relay. This is done to protect users from having "stuck txs". So by default the QT client will not allow you to do #1. Now #1 isn't part of the protocol. It is just a client side check to prevent you from doing something stupid. It can be easily removed from the source code and recompiled.
However #2 isn't as easy. All nodes have rules on which tx they will relay. This is a anti DOS mechanism. Low priority tx w/o fee will be dropped not relayed by any QT client. Most other clients follow the same (or similar) rules. So while you can get past #1 by modifying your client you can't control what other nodes do. It is very likely that all of your peers will simply drop your non-standard tx. #2 can be bypassed if you can connect to a miner directly of course as you point out nobody can force a miner to include a tx and there is no reason for a miner to include a non-standard no fee tx when there are waiting paying (and high priority no-fee) txs.