On an ARM Cortex-M3 the beginning of the Flash is the interrupt vector table, not code. On the LPC15 elf files that I've dumped the 'text' section starts at address 0x0000, which is the interrupt vector table. User code starts at some address after the interrupt vectors. The start up code is not necessarily the first code after the vector table, that's why vector 1 points to the 'reset' vector, or code to execute on coming out of reset.
As far as the 'user' code setting up the stack pointer, that is handled by the startup code provided by NXP's & ARM's libraries, the 'user' has no control over how that works and no visibilty as far as I know, I haven't seen source code for the start up. The LPC15 User Manual (UM10736 @ 5.4.2) doesn't say if the boot code sets up the Stack Pointer from vector 0, just that it executes the user app, which according to ARM is pointed to by vector 1.
In the 'M3 Guide' written by Joseph Yui, in section 3.7 RESET SEQUENCE, it says that the processor reads address 0, the starting value of MSP, and address 4, the Reset vector, and that the MSP is loaded by hardware so that exceptions can be handled immediately. So, on a hard power up the MSP is initialized by hardware and software does not need to initialize it. I would expect that the ROM boot up code needs to follow the same procedure and initialize the MSP before executing user code.
So I still don't know if it is possible to just start execution at the address in vector 1, it would seem that it isn't.