I think the simplest answer to your question is to keep delivery iterations as short as possible and keep as little work as possible "in progress" If you start a 6 week release (six, 1-week iterations) then the chance of a big change derailing the project is smaller than a 6 month release with 4 week iterations. (I'm assuming Agile development based on the RallyOn11 tag...)
Also, you might consider making the risks you are concerned about more visible. I like a 2-D risk chart with Impact and Probability as the axes. Brainstorm a few of the risks in these areas using the format {cause}, {effect}; {impact}. (A customer might release Feature A before Feb, this will cause a re-prioritization of the backlog with the impact that we might sacrifice other features for the release) This won't solve the problem but will help form the thinking and discussion around planning for the events. If a risk scores high enough it might not be wise to accept the risk. In the example, you might want to plan the project as if the competitor were releasing in Feb. Or, maybe other features are sacrificed or "cut down" to help mitigate the risk.
On the other side of your question, maximizing alignment with strategic goals might be achieved by "coding/labeling/coloring" your requirements/User Stories according to a taxonomy (like: Bug fixes, Feature Enhancements, Competitive Response, Strategic Direction) This will help show the balance of your project and help communicate when/how these get delivered (and also show impact if Bug Fixes keep taking a back seat to Strategic Direction).
Your team can also help by restructuring implementation based on the above info. Never underestimate a team of engineers' ability to find a solution to optimize the parameters of the project!
Hope this helps! Feel free to ask follow up questions, I'm still not 100% I answered your question.