Lee también esto:
http://dev.mysql.com/doc/refman/5.0/es/commit.html
Tienes que entender algo, PDO es solo un layer de acceso a tu RDBMS, y es tu RDBMS el que controla la transacción, no PDO, el beginTransaction lo que hace es un START TRANSACTION en tu RDBMS, y por cada Query, si esta fue exitosa o no el RDBMS es el que le avisa a PDO que fallo la query, y es hasta que haces un COMMIT que los cambios se efectuan directo en la base de datos, mientras no los puedes ver porque no existen.