Whisk together first 3 ingredients in a heavy saucepan. Whisk together egg yolks and half-and-half in a bowl. Gradually whisk egg mixture into sugar mixture; bring to a boil over medium heat, whisking constantly. Boil, whisking constantly, 1 minute; remove from heat. Whisk in butter and zest until butter melts. Gradually whisk in juice just until blended. Pour into a metal bowl, and place bowl on ice. Let stand, stirring occasionally, 8 to 10 minutes or until custard is cold and slightly thickened.
Meanwhile, line bottom and sides of an 8-inch square pan with plastic wrap, allowing 4 inches to extend over sides. Place 9 graham crackers, with sides touching, in a single layer in bottom of pan to form a large square. (Crackers will not completely cover bottom.)
Spoon about 3/4 cup cold custard over crackers; spread to edge of crackers. Repeat layers 3 times with crackers and remaining custard, ending with custard; top with remaining 9 crackers. Pull sides of plastic wrap tightly over cake; freeze in pan 8 hours.
Lift cake from pan, and place on a platter; discard plastic wrap. Cover loosely; let stand 1 hour.
Beat whipping cream at high speed with an electric mixer until foamy; gradually add powdered sugar, beating until soft peaks form. Spread on top of cake.
*Regular (Persian) lime zest and juice may be substituted.