Try storing the particle position in a variable and incrementing or decrementing it, instead of using the ParticlePosition function which seems to return the original value if only the emission is moved. With this code I could get a quite nice trail:
void DarkGDK ( void ) {
dbSyncOn();
dbSyncRate(60);
dbBackdropOn();
dbAutoCamOff();
dbPositionCamera(0, 5, -10);
dbPointCamera(0,0,0);
dbLoadImage("test.png", 1);
dbMakeParticles(10, 1, 50, 2);
float PosZ = 20;
dbPositionParticles(10, 0, 0, PosZ);
while( LoopGDK ( ) ) {
PosZ -= 0.2;
dbPositionParticleEmissions(10, 0, 0, PosZ);
dbSync();
}
}