How to define an image style where images are the exact same dimensions (e.g. grid of square images), without cropping or distorting the image?
If you don't mind applying a block background colour, this seems to be possible with Imagecache Actions module.


Download and enable the Imagecache Actions module and its imagecache_canvasactions submodule.
Add a normal "scale" action to the desired size (300 x 300). This keeps the aspect ratio.
After, add a "Define canvas" action, then set to the same dimensions under "exact size". 
Make sure "Resize canvas under image" is ticked, choose an appropriate background colour, and go. This fills in any gaps to the desired size with whatever colour you choose (or transparency if you choose no colour).