Solved it.
If the startup.m function has an 'input' command, parpool will not start. The 'keyboard' command in startup.m will prevent parpool from starting too. I haven't tested other commands, but I suspect functions that require user input will cause this bug as well.
Simple variable assignments in startup.m will not affect parpool. It's a shame because I would like to keep my startup.m the same and use the parallel toolbox.