Chas listed one of many methods to fix the issue. For an explanation what is happening is that every time the conditions in your event block occur the event is triggered. So if your conditions remain true indefinitely the message (or any actions) will occur indefinitely.
When programming missions I normally use Chas' method but set my variables up I. The start block tto be used later, or just use a storyline variable that increases by one every time an event happens.
Example:
<start>
Storyline=0
</start>
<event 1>
If storyline=0
-----------
Show incoming text message "Deathstar inbound. ETA 6 seconds"
set variable storyline to 1
Set timer deathstar to 6 seconds
</event>
<event>
if storyline = 1
If timer has finished "deathstar"
---------
Spawn enemy at _______ with name Deathstar_______ and hullID 1500
Set variable storyline to 2
<event>
Hopefully this isnt too much fluff for an explanation, but in the example above the storyline variable adjustment assures every event only occurs once, and also gives you something to follow for debugging. Btw, some semi-common knowledge: press F7 on the server during a mission to see timer values and variable values for debugging!