The horizontal scanrate is related to the number of (total, not just visible) lines and refresh rate as simply being the product of the two (HS = N * VS).
Figure you need at least 5-10 lines for blanking+sync BARE MINIMUM (and this will probably still piss your monitor off); 15-20 is a more typical low end. NTSC uses ~22 (per field).
In general, a "15kHz" monitor is designed for operation at ~15.5kHz (NTSC is 15.6kHz), but you can usually safely push it to 16-16.5kHz. The reason for this is that the deflection stages are designed the same as standard definition televisions.
Bottom line: at 16.5kHz and 60Hz refresh, you get 16500/60 = 275 total lines. Subtract 20 for blanking + sync and you get 255 lines. 256 a fairly common high end maintaining the full 60Hz.
320x240 is common because it's exactly half of 640x480 in both directions and was a common PC game resolution. It also has square pixels at 4:3 monitor aspect.
288 visible lines is somewhat frequently used, but the refresh is often somewhat lower than 60Hz. You're up in the 17.5-18kHz range if you do 288 visible lines + 20 blanking/sync at 60Hz, which is a bit beyond what I'd like to push a normal standard res arcade monitor to, but you can try it if you're willing to risk possible monitor failure (it's not overly likely, but it will depend on your monitor and its condition).
However, if you're willing to drop the refresh down, you can up the line count by quite a bit. At a flickery (to Americans; Europeans are used to it) 50Hz, ~300 lines is doable.
This is all assuming progressive scan. You can roughly double it if you're willing to put up with interlace.